https://bugs.eclipse.org/bugs/show_bug.cgi?id=536407, migrate to EPL 2.0 and catch up with branch development

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/LICENSE.txt b/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/about.html b/about.html
index 64c0598..e8b834d 100644
--- a/about.html
+++ b/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
index 37a237e..98061d5 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -2,9 +2,11 @@
 <!--#======================================================================= -->
 <!--# 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  -->
+<!--# are made available under the terms of the Eclipse Public License 2.0   -->
 <!--# which accompanies this distribution, and is available at               -->
-<!--# http://www.eclipse.org/legal/epl-v10.html                              -->
+<!--# https://www.eclipse.org/legal/epl-2.0/                                 -->
+<!--#                                                                        -->
+<!--# SPDX-License-Identifier: EPL-2.0                                       -->
 <!--#                                                                        -->
 <!--# Contributors:                                                          -->
 <!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation                           -->
diff --git a/notice.html b/notice.html
index c3d34c3..008b801 100644
--- a/notice.html
+++ b/notice.html
@@ -7,101 +7,183 @@
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 9, 2014</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
 </body>
 </html>
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/.project b/org.eclipse.osbp.dsl.common.xtext.edit/.project
index 94f14e4..1a91f61 100644
--- a/org.eclipse.osbp.dsl.common.xtext.edit/.project
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/.project
@@ -20,15 +20,9 @@
 			<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.babel.editor.rbeNature</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
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.common.xtext.edit/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/about.html b/org.eclipse.osbp.dsl.common.xtext.edit/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.common.xtext.edit/about.html
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/about.properties b/org.eclipse.osbp.dsl.common.xtext.edit/about.properties
index 258bcfa..dd3140a 100644
--- a/org.eclipse.osbp.dsl.common.xtext.edit/about.properties
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 #  Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 \n\
 Copyright (c) 2011, 2015 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/plugin.properties b/org.eclipse.osbp.dsl.common.xtext.edit/plugin.properties
index c7b1f01..bc720c1 100644
--- a/org.eclipse.osbp.dsl.common.xtext.edit/plugin.properties
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/plugin.properties
@@ -1,8 +1,10 @@
 # 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 
+#  are made available under the terms of the Eclipse Public License 2.0  
 #  which accompanies this distribution, and is available at 
-#  http://www.eclipse.org/legal/epl-v10.html 
+#  https://www.eclipse.org/legal/epl-2.0/ 
+# 
+#  SPDX-License-Identifier: EPL-2.0 
 # 
 #  Based on ideas from Xtext, Xtend, Xcore
 #   
@@ -506,3 +508,9 @@
 _UI_LAttribute_filtering_feature = Filtering
 _UI_LAttribute_rangeFiltering_feature = Range Filtering
 _UI_LAttribute_uniqueEntry_feature = Unique Entry
+_UI_LReference_isGrouped_feature = Is Grouped
+_UI_LReference_groupName_feature = Group Name
+_UI_LAttribute_isGrouped_feature = Is Grouped
+_UI_LAttribute_groupName_feature = Group Name
+_UI_LReference_asGrid_feature = As Grid
+_UI_LReference_asTable_feature = As Table
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/plugin.xml b/org.eclipse.osbp.dsl.common.xtext.edit/plugin.xml
index 555b725..001318d 100644
--- a/org.eclipse.osbp.dsl.common.xtext.edit/plugin.xml
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/plugin.xml
@@ -4,9 +4,11 @@
 <!--
  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 
+  are made available under the terms of the Eclipse Public License 2.0  
   which accompanies this distribution, and is available at 
-  http://www.eclipse.org/legal/epl-v10.html 
+  https://www.eclipse.org/legal/epl-2.0/ 
+ 
+  SPDX-License-Identifier: EPL-2.0 
  
   Based on ideas from Xtext, Xtend, Xcore
    
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/pom.xml b/org.eclipse.osbp.dsl.common.xtext.edit/pom.xml
index 678a13b..9b8c594 100644
--- a/org.eclipse.osbp.dsl.common.xtext.edit/pom.xml
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index 04d57ba..d7b4c6d 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 9cc87e0..b1257d5 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 5d2583b..ac9a35b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 4d2560b..2f451d3 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 1a10993..500e90c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 92e054d..a665d4b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 0734946..56e21b0 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index fa790a2..0df0880 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 2c897c5..de93215 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index e5db57c..787b717 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index cb9c848..24cce5a 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 409151e..206a448 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 56824fe..f84315b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 5f40240..a922331 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 4549acf..3cfe66e 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index ac56f0c..7deb7e7 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index a082ce1..a8fddf8 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 080916b..a941909 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 9f8c147..609040f 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 548dcc8..ba1794d 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index db3e964..93ae5cf 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 1499bee..a4cbde8 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 923d5d7..58d521c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index c2e75d2..3ce4435 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 722c735..9d6321d 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 3aa2304..ec90c2b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 5de8e53..7ab50da 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 5b26a62..e87533c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index a48b165..296e63b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index d743576..0aad624 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 9338fe2..45e563c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index c870298..349aad5 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index df9b05f..a1eefdd 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 70eb25a..c7f7d88 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
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
index 9a6596e..56bd747 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext.ide/LICENSE.txt b/org.eclipse.osbp.dsl.common.xtext.ide/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ide/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.common.xtext.ide/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.common.xtext.ide/about.html b/org.eclipse.osbp.dsl.common.xtext.ide/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ide/about.html
+++ b/org.eclipse.osbp.dsl.common.xtext.ide/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.common.xtext.ide/about.properties b/org.eclipse.osbp.dsl.common.xtext.ide/about.properties
index 2b2129a..c03d7d1 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ide/about.properties
+++ b/org.eclipse.osbp.dsl.common.xtext.ide/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying material
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributor
 #  Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 \n\
 Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\n\
 All rights reserved. This program and the accompanying material\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available \n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributor\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.common.xtext.ide/pom.xml b/org.eclipse.osbp.dsl.common.xtext.ide/pom.xml
index de818a1..6c22fe2 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ide/pom.xml
+++ b/org.eclipse.osbp.dsl.common.xtext.ide/pom.xml
@@ -2,9 +2,11 @@
 <!--#======================================================================= -->
 <!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
 <!--# All rights reserved. This program and the accompanying materials -->
-<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
diff --git a/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/AbstractCommonGrammarIdeModule.java b/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/AbstractCommonGrammarIdeModule.java
index 787f8bf..45ca3b5 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/AbstractCommonGrammarIdeModule.java
+++ b/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/AbstractCommonGrammarIdeModule.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/contentassist/antlr/CommonGrammarParser.java b/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/contentassist/antlr/CommonGrammarParser.java
index 18d9e75..d2d7705 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/contentassist/antlr/CommonGrammarParser.java
+++ b/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/contentassist/antlr/CommonGrammarParser.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/contentassist/antlr/PartialCommonGrammarContentAssistParser.java b/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/contentassist/antlr/PartialCommonGrammarContentAssistParser.java
index b4e016c..01f2729 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/contentassist/antlr/PartialCommonGrammarContentAssistParser.java
+++ b/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/contentassist/antlr/PartialCommonGrammarContentAssistParser.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/contentassist/antlr/internal/InternalCommonGrammarParser.java b/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/contentassist/antlr/internal/InternalCommonGrammarParser.java
index 44bff57..8737d20 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/contentassist/antlr/internal/InternalCommonGrammarParser.java
+++ b/org.eclipse.osbp.dsl.common.xtext.ide/src-gen/org/eclipse/osbp/dsl/common/xtext/ide/contentassist/antlr/internal/InternalCommonGrammarParser.java
@@ -23,9 +23,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext.tests/pom.xml b/org.eclipse.osbp.dsl.common.xtext.tests/pom.xml
index 714ec87..8259a69 100644
--- a/org.eclipse.osbp.dsl.common.xtext.tests/pom.xml
+++ b/org.eclipse.osbp.dsl.common.xtext.tests/pom.xml
@@ -2,9 +2,11 @@
 <!--#======================================================================= -->
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--#     Lunifera GmbH - initial API and implementation -->
diff --git a/org.eclipse.osbp.dsl.common.xtext.tests/src-gen/org/eclipse/osbp/dsl/common/xtext/tests/CommonGrammarInjectorProvider.java b/org.eclipse.osbp.dsl.common.xtext.tests/src-gen/org/eclipse/osbp/dsl/common/xtext/tests/CommonGrammarInjectorProvider.java
index 54863a3..4161bd8 100644
--- a/org.eclipse.osbp.dsl.common.xtext.tests/src-gen/org/eclipse/osbp/dsl/common/xtext/tests/CommonGrammarInjectorProvider.java
+++ b/org.eclipse.osbp.dsl.common.xtext.tests/src-gen/org/eclipse/osbp/dsl/common/xtext/tests/CommonGrammarInjectorProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/LICENSE.txt b/org.eclipse.osbp.dsl.common.xtext.ui/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ui/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.common.xtext.ui/META-INF/MANIFEST.MF
index 13b22f0..3f1f87e 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/META-INF/MANIFEST.MF
@@ -26,7 +26,8 @@
  org.eclipse.osbp.xtext.oxtype.ui;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.xtext.xbase.lib,
  org.eclipse.xtend.lib;resolution:=optional
-Import-Package: org.apache.log4j
+Import-Package: org.apache.log4j,
+ org.eclipse.osbp.runtime.common.layouting
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: org.eclipse.osbp.dsl.common.xtext.ui,
  org.eclipse.osbp.dsl.common.xtext.ui.contentassist,
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/about.html b/org.eclipse.osbp.dsl.common.xtext.ui/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ui/about.html
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/about.properties b/org.eclipse.osbp.dsl.common.xtext.ui/about.properties
index 24098b5..f575af1 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ui/about.properties
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 #  Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 \n\
 Copyright (c) 2011, 2015 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/build.properties b/org.eclipse.osbp.dsl.common.xtext.ui/build.properties
index df764e0..ac521e8 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ui/build.properties
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/build.properties
@@ -4,6 +4,6 @@
 bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
                .,\
                plugin.xml,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html
 
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/epl-2.0.html b/org.eclipse.osbp.dsl.common.xtext.ui/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/epl-v10.html b/org.eclipse.osbp.dsl.common.xtext.ui/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.common.xtext.ui/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/license.html b/org.eclipse.osbp.dsl.common.xtext.ui/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ui/license.html
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/pom.xml b/org.eclipse.osbp.dsl.common.xtext.ui/pom.xml
index 2969a8b..40511fb 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ui/pom.xml
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index 3d0dc8f..1345dc1 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index b770a17..3647885 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index e4c985b..855860b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/internal/XtextActivator.java b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/internal/XtextActivator.java
index b8a6df5..00d8ed4 100644
--- a/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/internal/XtextActivator.java
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/internal/XtextActivator.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 09ad580..a53cd20 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 7940f66..98fe9f5 100644
--- 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
@@ -1,15 +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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
  */
 package org.eclipse.osbp.dsl.common.xtext.ui.contentassist;
 
+import java.lang.reflect.Field;
 import java.sql.Blob;
 import java.util.Date;
 import java.util.HashMap;
@@ -18,12 +21,17 @@
 import java.util.Set;
 
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
 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.LKeyAndValue;
 import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.runtime.common.layouting.IPropertyConstants;
+import org.eclipse.osbp.runtime.common.layouting.IPropertyConstants.DSLModelsEnum;
 import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
+import org.eclipse.xtext.Assignment;
 import org.eclipse.xtext.Keyword;
 import org.eclipse.xtext.RuleCall;
 import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
@@ -331,6 +339,39 @@
 
 		return false;
 	}
+	
+	@Override
+	public void completeKeyAndValue_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		if (IPropertyConstants.PROPERTY_MODEL.equalsIgnoreCase(((LKeyAndValue)model).getKey())){
+			for (DSLModelsEnum modelsEnum : DSLModelsEnum.values()) {
+				ICompletionProposal proposal = createCompletionProposal("\"" + modelsEnum.name() + "\"", context);
+				acceptor.accept(proposal);
+			} 
+		}
+		super.completeKeyAndValue_Value(model, assignment, context, acceptor);
+	}
+
+	
+	@Override
+	public void completeKeyAndValue_Key(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		for (Field field : IPropertyConstants.class.getDeclaredFields()) {
+			if (field.getName().startsWith("PROPERTY_")){
+				try {
+					Object result = field.get(null);
+					ICompletionProposal proposal = createCompletionProposal("\"" + result + "\"", context);
+					acceptor.accept(proposal);
+				} catch (IllegalArgumentException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				} catch (IllegalAccessException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+			}
+		} 
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+
 
 	// ------------- delegates to TerminalsProposalProvider ------------------
 	public void complete_STRING(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
diff --git a/org.eclipse.osbp.dsl.common.xtext/LICENSE.txt b/org.eclipse.osbp.dsl.common.xtext/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.common.xtext/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.common.xtext/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.common.xtext/about.html b/org.eclipse.osbp.dsl.common.xtext/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.common.xtext/about.html
+++ b/org.eclipse.osbp.dsl.common.xtext/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.common.xtext/about.properties b/org.eclipse.osbp.dsl.common.xtext/about.properties
index f56c605..d8e3cf2 100644
--- a/org.eclipse.osbp.dsl.common.xtext/about.properties
+++ b/org.eclipse.osbp.dsl.common.xtext/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 #  Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 \n\
 Copyright (c) 2011, 2015 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.common.xtext/build.properties b/org.eclipse.osbp.dsl.common.xtext/build.properties
index 1d215d3..e451272 100644
--- a/org.eclipse.osbp.dsl.common.xtext/build.properties
+++ b/org.eclipse.osbp.dsl.common.xtext/build.properties
@@ -8,7 +8,7 @@
                about.html,\
                META-INF/,\
                .,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                plugin.xml,\
                plugin.properties,\
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationDef.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationDef.java
index 835fe4d..d6e106f 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationDef.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationDef.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationTarget.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationTarget.java
index 9b5a6be..00fbe4c 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationTarget.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationTarget.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttribute.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttribute.java
index 5542126..5f9741d 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttribute.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttribute.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
@@ -42,6 +44,8 @@
  *   <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#getProperties <em>Properties</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getConstraints <em>Constraints</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isIsGrouped <em>Is Grouped</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getGroupName <em>Group Name</em>}</li>
  * </ul>
  *
  * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute()
@@ -454,4 +458,54 @@
 	 */
 	EList<LDatatypeConstraint> getConstraints();
 
+	/**
+	 * Returns the value of the '<em><b>Is Grouped</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Is Grouped</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Is Grouped</em>' attribute.
+	 * @see #setIsGrouped(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_IsGrouped()
+	 * @generated
+	 */
+	boolean isIsGrouped();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isIsGrouped <em>Is Grouped</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Is Grouped</em>' attribute.
+	 * @see #isIsGrouped()
+	 * @generated
+	 */
+	void setIsGrouped(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Group Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Group 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>Group Name</em>' attribute.
+	 * @see #setGroupName(String)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_GroupName()
+	 * @generated
+	 */
+	String getGroupName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getGroupName <em>Group Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Group Name</em>' attribute.
+	 * @see #getGroupName()
+	 * @generated
+	 */
+	void setGroupName(String value);
+
 } // LAttribute
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttributeMatchingConstraint.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttributeMatchingConstraint.java
index 6baa8b1..05f1467 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttributeMatchingConstraint.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttributeMatchingConstraint.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LBlobConstraint.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LBlobConstraint.java
index 7b0e5fc..4ed37e0 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LBlobConstraint.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LBlobConstraint.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LBooleanConstraint.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LBooleanConstraint.java
index 0c01d3f..c4b54b8 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LBooleanConstraint.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LBooleanConstraint.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LClass.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LClass.java
index 0b8b067..ea4d358 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LClass.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LClass.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LCommonModel.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LCommonModel.java
index 2b1f4fe..bd79763 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LCommonModel.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LCommonModel.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LComparatorType.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LComparatorType.java
index a450d6e..f47bf17 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LComparatorType.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LComparatorType.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraint.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraint.java
index 45d2c0b..6be5015 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraint.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraint.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraintSeverity.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraintSeverity.java
index b61caa4..9cd7d9c 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraintSeverity.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraintSeverity.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDataType.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDataType.java
index cf642dc..7b30d69 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDataType.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDataType.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDatatypeConstraint.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDatatypeConstraint.java
index 877f205..86b472b 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDatatypeConstraint.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDatatypeConstraint.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateConstraint.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateConstraint.java
index 9c46f5f..da9c7b8 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateConstraint.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateConstraint.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateType.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateType.java
index a07c41c..d8c68de 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateType.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateType.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDecimalConstraint.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDecimalConstraint.java
index 66a6223..4415500 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDecimalConstraint.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDecimalConstraint.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertFalse.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertFalse.java
index 3e30052..9e6bd2d 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertFalse.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertFalse.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertTrue.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertTrue.java
index 8037a33..771f6df 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertTrue.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertTrue.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMax.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMax.java
index 83301be..b6e95a5 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMax.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMax.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMin.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMin.java
index a3bf8d6..6965f42 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMin.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMin.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDigits.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDigits.java
index c238fa2..ab47fa5 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDigits.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDigits.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCFuture.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCFuture.java
index 14fd1ae..c3fa505 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCFuture.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCFuture.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNotNull.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNotNull.java
index dfad9d7..df6a5f3 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNotNull.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNotNull.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNull.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNull.java
index 26e1a1b..bc8f5e2 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNull.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNull.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMax.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMax.java
index dca49ab..42c6223 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMax.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMax.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMin.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMin.java
index 0a35215..68693b2 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMin.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMin.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCPast.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCPast.java
index 232d4fe..d94a283 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCPast.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCPast.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCRegEx.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCRegEx.java
index ce6de04..d1b78b4 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCRegEx.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCRegEx.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCSize.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCSize.java
index 4dab3cc..db9454e 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCSize.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCSize.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnum.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnum.java
index e306466..29a8463 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnum.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnum.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnumLiteral.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnumLiteral.java
index da96988..fa96fe1 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnumLiteral.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnumLiteral.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeature.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeature.java
index b9ee5ad..a7bcab6 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeature.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeature.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeaturesHolder.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeaturesHolder.java
index f719912..ed7c6c5 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeaturesHolder.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeaturesHolder.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LImport.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LImport.java
index fb88ea9..7d8d341 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LImport.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LImport.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LKeyAndValue.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LKeyAndValue.java
index 15d5a1f..784940b 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LKeyAndValue.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LKeyAndValue.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LLazyResolver.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LLazyResolver.java
index 849dad3..1a9dfdb 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LLazyResolver.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LLazyResolver.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LLowerBound.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LLowerBound.java
index 59d5771..dd55447 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LLowerBound.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LLowerBound.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LModifier.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LModifier.java
index 5b1fae0..93cad02 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LModifier.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LModifier.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LMultiplicity.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LMultiplicity.java
index 6ea93f6..b7eadd1 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LMultiplicity.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LMultiplicity.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LNumericConstraint.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LNumericConstraint.java
index 12622f8..fbd24fb 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LNumericConstraint.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LNumericConstraint.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LOperation.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LOperation.java
index 2c324d2..10e2f5e 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LOperation.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LOperation.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LPackage.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LPackage.java
index 56730d1..7bee1e9 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LPackage.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LPackage.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LReference.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LReference.java
index ec5bca3..4ecc433 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LReference.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LReference.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
@@ -28,6 +30,10 @@
  *   <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>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isIsGrouped <em>Is Grouped</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#getGroupName <em>Group Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isAsGrid <em>As Grid</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isAsTable <em>As Table</em>}</li>
  * </ul>
  *
  * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLReference()
@@ -114,4 +120,104 @@
 	 */
 	EList<LDatatypeConstraint> getConstraints();
 
+	/**
+	 * Returns the value of the '<em><b>Is Grouped</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Is Grouped</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Is Grouped</em>' attribute.
+	 * @see #setIsGrouped(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLReference_IsGrouped()
+	 * @generated
+	 */
+	boolean isIsGrouped();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isIsGrouped <em>Is Grouped</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Is Grouped</em>' attribute.
+	 * @see #isIsGrouped()
+	 * @generated
+	 */
+	void setIsGrouped(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Group Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Group 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>Group Name</em>' attribute.
+	 * @see #setGroupName(String)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLReference_GroupName()
+	 * @generated
+	 */
+	String getGroupName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#getGroupName <em>Group Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Group Name</em>' attribute.
+	 * @see #getGroupName()
+	 * @generated
+	 */
+	void setGroupName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>As Grid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>As Grid</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 Grid</em>' attribute.
+	 * @see #setAsGrid(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLReference_AsGrid()
+	 * @generated
+	 */
+	boolean isAsGrid();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isAsGrid <em>As Grid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>As Grid</em>' attribute.
+	 * @see #isAsGrid()
+	 * @generated
+	 */
+	void setAsGrid(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>As Table</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>As Table</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 Table</em>' attribute.
+	 * @see #setAsTable(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLReference_AsTable()
+	 * @generated
+	 */
+	boolean isAsTable();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isAsTable <em>As Table</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>As Table</em>' attribute.
+	 * @see #isAsTable()
+	 * @generated
+	 */
+	void setAsTable(boolean value);
+
 } // LReference
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilter.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilter.java
index 486cea9..2d3f13e 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilter.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilter.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilters.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilters.java
index 9e920d6..c86c635 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilters.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilters.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LScalarType.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LScalarType.java
index 33c1ae1..629a7ed 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LScalarType.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LScalarType.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LStringConstraint.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LStringConstraint.java
index baebe84..7289960 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LStringConstraint.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LStringConstraint.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LType.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LType.java
index 65e4c5a..4cf3ca8 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LType.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LType.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LTypedPackage.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LTypedPackage.java
index d1bf511..fc11710 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LTypedPackage.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LTypedPackage.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LUpperBound.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LUpperBound.java
index 85cdfd7..96976d4 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LUpperBound.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LUpperBound.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LVisibility.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LVisibility.java
index 35ec75f..71f9206 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LVisibility.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LVisibility.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesFactory.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesFactory.java
index b9defcc..4dfb77a 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesFactory.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesFactory.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesPackage.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesPackage.java
index 4ec5364..91e2810 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesPackage.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesPackage.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
@@ -1202,13 +1204,49 @@
 	int LREFERENCE__CONSTRAINTS = LFEATURE_FEATURE_COUNT + 3;
 
 	/**
+	 * The feature id for the '<em><b>Is Grouped</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__IS_GROUPED = LFEATURE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Group Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__GROUP_NAME = LFEATURE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>As Grid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__AS_GRID = LFEATURE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>As Table</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__AS_TABLE = LFEATURE_FEATURE_COUNT + 7;
+
+	/**
 	 * 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;
+	int LREFERENCE_FEATURE_COUNT = LFEATURE_FEATURE_COUNT + 8;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -1437,13 +1475,31 @@
 	int LATTRIBUTE__CONSTRAINTS = LFEATURE_FEATURE_COUNT + 16;
 
 	/**
+	 * The feature id for the '<em><b>Is Grouped</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__IS_GROUPED = LFEATURE_FEATURE_COUNT + 17;
+
+	/**
+	 * The feature id for the '<em><b>Group Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__GROUP_NAME = LFEATURE_FEATURE_COUNT + 18;
+
+	/**
 	 * 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 + 17;
+	int LATTRIBUTE_FEATURE_COUNT = LFEATURE_FEATURE_COUNT + 19;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -4191,6 +4247,50 @@
 	EReference getLReference_Constraints();
 
 	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isIsGrouped <em>Is Grouped</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Is Grouped</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LReference#isIsGrouped()
+	 * @see #getLReference()
+	 * @generated
+	 */
+	EAttribute getLReference_IsGrouped();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#getGroupName <em>Group Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Group Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LReference#getGroupName()
+	 * @see #getLReference()
+	 * @generated
+	 */
+	EAttribute getLReference_GroupName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isAsGrid <em>As Grid</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>As Grid</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LReference#isAsGrid()
+	 * @see #getLReference()
+	 * @generated
+	 */
+	EAttribute getLReference_AsGrid();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isAsTable <em>As Table</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>As Table</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LReference#isAsTable()
+	 * @see #getLReference()
+	 * @generated
+	 */
+	EAttribute getLReference_AsTable();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute <em>LAttribute</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -4388,6 +4488,28 @@
 	EReference getLAttribute_Constraints();
 
 	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isIsGrouped <em>Is Grouped</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Is Grouped</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isIsGrouped()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_IsGrouped();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getGroupName <em>Group Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Group Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getGroupName()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_GroupName();
+
+	/**
 	 * 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 -->
@@ -5764,6 +5886,38 @@
 		EReference LREFERENCE__CONSTRAINTS = eINSTANCE.getLReference_Constraints();
 
 		/**
+		 * The meta object literal for the '<em><b>Is Grouped</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LREFERENCE__IS_GROUPED = eINSTANCE.getLReference_IsGrouped();
+
+		/**
+		 * The meta object literal for the '<em><b>Group Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LREFERENCE__GROUP_NAME = eINSTANCE.getLReference_GroupName();
+
+		/**
+		 * The meta object literal for the '<em><b>As Grid</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LREFERENCE__AS_GRID = eINSTANCE.getLReference_AsGrid();
+
+		/**
+		 * The meta object literal for the '<em><b>As Table</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LREFERENCE__AS_TABLE = eINSTANCE.getLReference_AsTable();
+
+		/**
 		 * 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 -->
@@ -5910,6 +6064,22 @@
 		EReference LATTRIBUTE__CONSTRAINTS = eINSTANCE.getLAttribute_Constraints();
 
 		/**
+		 * The meta object literal for the '<em><b>Is Grouped</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__IS_GROUPED = eINSTANCE.getLAttribute_IsGrouped();
+
+		/**
+		 * The meta object literal for the '<em><b>Group Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__GROUP_NAME = eINSTANCE.getLAttribute_GroupName();
+
+		/**
 		 * 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 -->
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationDefImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationDefImpl.java
index 91f57ca..bac11bb 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationDefImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationDefImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationTargetImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationTargetImpl.java
index 4e223c6..d965b0f 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationTargetImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationTargetImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAttributeMatchingConstraintImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAttributeMatchingConstraintImpl.java
index aea13bc..56103af 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAttributeMatchingConstraintImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAttributeMatchingConstraintImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LClassImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LClassImpl.java
index fa9ea82..a18fec6 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LClassImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LClassImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LCommonModelImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LCommonModelImpl.java
index 81b3430..9855a3c 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LCommonModelImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LCommonModelImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDataTypeImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDataTypeImpl.java
index 3d3f77f..eb5551c 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDataTypeImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDataTypeImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertFalseImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertFalseImpl.java
index 968ec75..275604a 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertFalseImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertFalseImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertTrueImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertTrueImpl.java
index 9efb5ee..ba767a9 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertTrueImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertTrueImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMaxImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMaxImpl.java
index 19bc348..84311b8 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMaxImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMaxImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMinImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMinImpl.java
index 198f880..1aa5f12 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMinImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMinImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDigitsImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDigitsImpl.java
index f94976b..6e7907e 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDigitsImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDigitsImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCFutureImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCFutureImpl.java
index 54b7a08..ecc4929 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCFutureImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCFutureImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNotNullImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNotNullImpl.java
index 15b8330..a8f2d91 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNotNullImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNotNullImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNullImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNullImpl.java
index 8505252..8371f7f 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNullImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNullImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMaxImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMaxImpl.java
index 036df93..e626fff 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMaxImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMaxImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMinImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMinImpl.java
index 9fbfa9d..0e6a742 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMinImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMinImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCPastImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCPastImpl.java
index 2b9dbea..0117948 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCPastImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCPastImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCRegExImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCRegExImpl.java
index 0227d7d..54c9c36 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCRegExImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCRegExImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCSizeImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCSizeImpl.java
index e07b76e..073ad77 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCSizeImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCSizeImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumImpl.java
index d5d7f85..bbe15ae 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumLiteralImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumLiteralImpl.java
index 886851f..461162a 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumLiteralImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumLiteralImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LImportImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LImportImpl.java
index 3735708..c7b8934 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LImportImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LImportImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LKeyAndValueImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LKeyAndValueImpl.java
index 094cb06..1e462c7 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LKeyAndValueImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LKeyAndValueImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LLazyResolverImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LLazyResolverImpl.java
index d18540d..8cacd0f 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LLazyResolverImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LLazyResolverImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LModifierImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LModifierImpl.java
index def2354..c132d2c 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LModifierImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LModifierImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LMultiplicityImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LMultiplicityImpl.java
index 4ca5d66..06b4568 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LMultiplicityImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LMultiplicityImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LOperationImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LOperationImpl.java
index ae5b3a1..0b8618c 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LOperationImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LOperationImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LPackageImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LPackageImpl.java
index c3c50ed..1440bb6 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LPackageImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LPackageImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LResultFiltersImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LResultFiltersImpl.java
index dfc72e7..f5659b7 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LResultFiltersImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LResultFiltersImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LScalarTypeImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LScalarTypeImpl.java
index 3aba097..5d62c45 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LScalarTypeImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LScalarTypeImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypeImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypeImpl.java
index 87cb46b..6568bbe 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypeImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypeImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypedPackageImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypedPackageImpl.java
index d466a03..edc63e9 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypedPackageImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypedPackageImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesFactoryImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesFactoryImpl.java
index 633d758..634c68f 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesFactoryImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesFactoryImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesPackageImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesPackageImpl.java
index 4468a54..e8669b7 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesPackageImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesPackageImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
@@ -1078,6 +1080,42 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EAttribute getLReference_IsGrouped() {
+		return (EAttribute)lReferenceEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLReference_GroupName() {
+		return (EAttribute)lReferenceEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLReference_AsGrid() {
+		return (EAttribute)lReferenceEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLReference_AsTable() {
+		return (EAttribute)lReferenceEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getLAttribute() {
 		return lAttributeEClass;
 	}
@@ -1240,6 +1278,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EAttribute getLAttribute_IsGrouped() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(17);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttribute_GroupName() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(18);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getLKeyAndValue() {
 		return lKeyAndValueEClass;
 	}
@@ -2075,6 +2131,10 @@
 		createEAttribute(lReferenceEClass, LREFERENCE__CASCADING);
 		createEReference(lReferenceEClass, LREFERENCE__PROPERTIES);
 		createEReference(lReferenceEClass, LREFERENCE__CONSTRAINTS);
+		createEAttribute(lReferenceEClass, LREFERENCE__IS_GROUPED);
+		createEAttribute(lReferenceEClass, LREFERENCE__GROUP_NAME);
+		createEAttribute(lReferenceEClass, LREFERENCE__AS_GRID);
+		createEAttribute(lReferenceEClass, LREFERENCE__AS_TABLE);
 
 		lAttributeEClass = createEClass(LATTRIBUTE);
 		createEAttribute(lAttributeEClass, LATTRIBUTE__ID);
@@ -2094,6 +2154,8 @@
 		createEReference(lAttributeEClass, LATTRIBUTE__TYPE);
 		createEReference(lAttributeEClass, LATTRIBUTE__PROPERTIES);
 		createEReference(lAttributeEClass, LATTRIBUTE__CONSTRAINTS);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__IS_GROUPED);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__GROUP_NAME);
 
 		lKeyAndValueEClass = createEClass(LKEY_AND_VALUE);
 		createEAttribute(lKeyAndValueEClass, LKEY_AND_VALUE__KEY);
@@ -2378,6 +2440,10 @@
 		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);
+		initEAttribute(getLReference_IsGrouped(), theEcorePackage.getEBoolean(), "isGrouped", null, 0, 1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLReference_GroupName(), theEcorePackage.getEString(), "groupName", null, 0, 1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLReference_AsGrid(), theEcorePackage.getEBoolean(), "asGrid", null, 0, 1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLReference_AsTable(), theEcorePackage.getEBoolean(), "asTable", null, 0, 1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !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);
@@ -2397,6 +2463,8 @@
 		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_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);
+		initEAttribute(getLAttribute_IsGrouped(), theEcorePackage.getEBoolean(), "isGrouped", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttribute_GroupName(), theEcorePackage.getEString(), "groupName", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !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);
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesAdapterFactory.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesAdapterFactory.java
index 40e02c3..ed35422 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesAdapterFactory.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesAdapterFactory.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesSwitch.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesSwitch.java
index 01ae0e6..b65096c 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesSwitch.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesSwitch.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
diff --git a/org.eclipse.osbp.dsl.common.xtext/epl-2.0.html b/org.eclipse.osbp.dsl.common.xtext/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.common.xtext/epl-v10.html b/org.eclipse.osbp.dsl.common.xtext/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.common.xtext/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.common.xtext/license.html b/org.eclipse.osbp.dsl.common.xtext/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.common.xtext/license.html
+++ b/org.eclipse.osbp.dsl.common.xtext/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.common.xtext/model/types.xcore b/org.eclipse.osbp.dsl.common.xtext/model/types.xcore
index 7387b3c..71f7024 100644
--- a/org.eclipse.osbp.dsl.common.xtext/model/types.xcore
+++ b/org.eclipse.osbp.dsl.common.xtext/model/types.xcore
@@ -4,9 +4,11 @@
 @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 
+ are made available under the terms of the Eclipse Public License 2.0  
  which accompanies this distribution, and is available at 
- http://www.eclipse.org/legal/epl-v10.html 
+ https://www.eclipse.org/legal/epl-2.0/ 
+ 
+ SPDX-License-Identifier: EPL-2.0 
 
  Based on ideas from Xtext, Xtend, Xcore
   
@@ -168,6 +170,13 @@
 	contains LKeyAndValue[*] properties
 	// constraints for the datatype
 	contains LDatatypeConstraint[*] constraints
+	// could be grouped for ui
+	boolean isGrouped
+	String groupName
+	// ui should use a grid
+	boolean asGrid
+	// ui should use a table
+	boolean asTable
 }
 
 interface LAttribute extends LFeature {
@@ -206,6 +215,9 @@
 	contains LKeyAndValue[*] properties
 	// constraints for the datatype
 	contains LDatatypeConstraint[*] constraints
+	// could be grouped for ui
+	boolean isGrouped
+	String groupName
 }
 
 class LKeyAndValue {
diff --git a/org.eclipse.osbp.dsl.common.xtext/plugin.properties b/org.eclipse.osbp.dsl.common.xtext/plugin.properties
index 93f328b..9ef82e8 100644
--- a/org.eclipse.osbp.dsl.common.xtext/plugin.properties
+++ b/org.eclipse.osbp.dsl.common.xtext/plugin.properties
@@ -1,8 +1,10 @@
 # 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 
+#  are made available under the terms of the Eclipse Public License 2.0  
 #  which accompanies this distribution, and is available at 
-#  http://www.eclipse.org/legal/epl-v10.html 
+#  https://www.eclipse.org/legal/epl-2.0/ 
+# 
+#  SPDX-License-Identifier: EPL-2.0 
 # 
 #  Based on ideas from Xtext, Xtend, Xcore
 #   
diff --git a/org.eclipse.osbp.dsl.common.xtext/plugin.xml b/org.eclipse.osbp.dsl.common.xtext/plugin.xml
index 32f511d..1357f37 100644
--- a/org.eclipse.osbp.dsl.common.xtext/plugin.xml
+++ b/org.eclipse.osbp.dsl.common.xtext/plugin.xml
@@ -4,9 +4,11 @@
 <!--
  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
+ are made available under the terms of the Eclipse Public License 2.0 
  which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v10.html
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
  
  Sources generated by Xtext  
  
diff --git a/org.eclipse.osbp.dsl.common.xtext/pom.xml b/org.eclipse.osbp.dsl.common.xtext/pom.xml
index 8993162..da1f13f 100644
--- a/org.eclipse.osbp.dsl.common.xtext/pom.xml
+++ b/org.eclipse.osbp.dsl.common.xtext/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index a9be869..ee53ff2 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 9e97a0e..0ec745b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index e3a5998..9efade7 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 8ce0fd7..205652b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 5bfeb3d..3d807ee 100644
--- 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
@@ -1,3 +1,18 @@
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
+ * generated by Xtext 2.11.0
+
+ */
 package org.eclipse.osbp.dsl.common.xtext.parser.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
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
index 38a30d9..bbb3372 100644
--- 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
@@ -23,9 +23,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/scoping/AbstractCommonGrammarScopeProvider.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/scoping/AbstractCommonGrammarScopeProvider.java
index 7ee2846..5e45b59 100644
--- a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/scoping/AbstractCommonGrammarScopeProvider.java
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/scoping/AbstractCommonGrammarScopeProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSemanticSequencer.java
index 713dc56..e885069 100644
--- a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSemanticSequencer.java
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSemanticSequencer.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSyntacticSequencer.java
index e155131..000b1b7 100644
--- a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSyntacticSequencer.java
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSyntacticSequencer.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 5b5902c..aefa361 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/validation/AbstractCommonGrammarValidator.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/validation/AbstractCommonGrammarValidator.java
index 9aaa0d2..35ec068 100644
--- a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/validation/AbstractCommonGrammarValidator.java
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/validation/AbstractCommonGrammarValidator.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 4c04a64..78003f6 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index e16ba2b..5600ac4 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index cc15ecd..67cd1d8 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index bfb0e57..da60678 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index f6e516f..201d127 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 33768a9..7708b46 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 var fileHeaderText = "/**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/MavenGenerateCommonGrammar.mwe2 b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/MavenGenerateCommonGrammar.mwe2
new file mode 100644
index 0000000..219249a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/MavenGenerateCommonGrammar.mwe2
@@ -0,0 +1,158 @@
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+module org.eclipse.osbp.dsl.common.xtext.MavenGenerateCommonGrammar
+
+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 fileHeaderText = "/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
+ * generated by Xtext \${version}\n
+ */
+"
+var fileExtensions = "commonmodel"
+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 = StandaloneSetup {
+		resourceSet = org.eclipse.xtext.resource.XtextResourceSet : theResourceSet {}
+
+		// add mappings from platform:/resource to classpath:/
+		uriMap = {
+			from = "platform:/resource/org.eclipse.xtext.xbase/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.xtext.xbase.lib/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.xtext.common.types/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.emf.ecore.xcore/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.emf.ecore.xcore.lib/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.osbp.dsl.semantic.common/"
+			to = "classpath:/"
+		}
+
+		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"
+	}
+
+	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"
+			fileExtensions = fileExtensions
+			fragment = grammarAccess.GrammarAccessFragment {}
+			fragment = serializer.SerializerFragment {
+			// generateDebugData = true
+			}
+			fragment = resourceFactory.ResourceFactoryFragment {
+				fileExtensions = fileExtensions
+			}
+			fragment = XtextAntlrGeneratorFragment {
+				options = auto-inject {}
+			}
+			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 = auto-inject {}
+			}
+			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
index 26a4ae9..62f519e 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 524eaaf..b3be546 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 253cbbe..0483bdf 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index cd1be41..d510cda 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 2198e9a..a57cf39 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index e801d4c..8eded8f 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -28,13 +30,6 @@
 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
@@ -58,12 +53,19 @@
 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.Dirty
 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
-import org.eclipse.osbp.runtime.common.annotations.Dirty
+import org.eclipse.osbp.runtime.common.validation.ErrorSeverity
+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.runtime.common.validation.InfoSeverity
+import org.eclipse.osbp.runtime.common.validation.WarningSeverity
 
 /** 
  * This class is responsible to generate the Annotations defined in the entity model
@@ -265,15 +267,15 @@
 	protected def handlePayloadAndMessages(LDatatypeConstraint constraint, JvmAnnotationReference anno) {
 
 		// TODO OSBP right now vaadin does not support INFO and WARNING.
-//		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))
-//		}
-		anno.addAnnAttr(constraint, "payload", typeof(ErrorSeverity).getTypeForName(constraint))
+		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))
+		}
+//		anno.addAnnAttr(constraint, "payload", typeof(ErrorSeverity).getTypeForName(constraint))
 
 		val b = new StringBuilder
 		if (!constraint.msgI18nKey.nullOrEmpty) {
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
index 2967194..2061836 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 6677118..4a5f36e 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scoping/CommonGrammarScopeProvider.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scoping/CommonGrammarScopeProvider.java
index e957c80..d023967 100644
--- a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scoping/CommonGrammarScopeProvider.java
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scoping/CommonGrammarScopeProvider.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scoping/CommonImportSectionNamespaceScopeProvider.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scoping/CommonImportSectionNamespaceScopeProvider.java
index 06ce5e0..34cf6a9 100644
--- a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scoping/CommonImportSectionNamespaceScopeProvider.java
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scoping/CommonImportSectionNamespaceScopeProvider.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scoping/ConstraintEnumMatchingLiteralScope.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scoping/ConstraintEnumMatchingLiteralScope.java
index 407d3a7..c87a593 100644
--- a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scoping/ConstraintEnumMatchingLiteralScope.java
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scoping/ConstraintEnumMatchingLiteralScope.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/validation/CommonGrammarValidator.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/validation/CommonGrammarValidator.java
index e95684e..156b4c3 100644
--- a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/validation/CommonGrammarValidator.java
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/validation/CommonGrammarValidator.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index bc1935c..99735fe 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index a7cc54f..e2d69cf 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index ba7b787..42d3d51 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index d27d6c8..7bcc4e7 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.lib/LICENSE.txt b/org.eclipse.osbp.dsl.datatype.lib/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.datatype.lib/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.datatype.lib/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.datatype.lib/about.html b/org.eclipse.osbp.dsl.datatype.lib/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.datatype.lib/about.html
+++ b/org.eclipse.osbp.dsl.datatype.lib/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.datatype.lib/about.properties b/org.eclipse.osbp.dsl.datatype.lib/about.properties
index 1f02543..49a0392 100644
--- a/org.eclipse.osbp.dsl.datatype.lib/about.properties
+++ b/org.eclipse.osbp.dsl.datatype.lib/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 #  Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 \n\
 Copyright (c) 2011, 2015 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.datatype.lib/build.properties b/org.eclipse.osbp.dsl.datatype.lib/build.properties
index 239e1d8..d39a7f2 100644
--- a/org.eclipse.osbp.dsl.datatype.lib/build.properties
+++ b/org.eclipse.osbp.dsl.datatype.lib/build.properties
@@ -1,6 +1,6 @@
 bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
                .,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                .project,\
                .classpath,\
diff --git a/org.eclipse.osbp.dsl.datatype.lib/epl-2.0.html b/org.eclipse.osbp.dsl.datatype.lib/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.datatype.lib/epl-v10.html b/org.eclipse.osbp.dsl.datatype.lib/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.datatype.lib/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.datatype.lib/license.html b/org.eclipse.osbp.dsl.datatype.lib/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.datatype.lib/license.html
+++ b/org.eclipse.osbp.dsl.datatype.lib/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.datatype.lib/pom.xml b/org.eclipse.osbp.dsl.datatype.lib/pom.xml
index 408ce97..d2aefc1 100644
--- a/org.eclipse.osbp.dsl.datatype.lib/pom.xml
+++ b/org.eclipse.osbp.dsl.datatype.lib/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index d7983e4..afb4f0f 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index b172367..5024ccf 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 4870801..1f9d024 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 00482c4..2c903c4 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/LICENSE.txt b/org.eclipse.osbp.dsl.datatype.xtext.ide/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/about.html b/org.eclipse.osbp.dsl.datatype.xtext.ide/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/about.html
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/about.properties b/org.eclipse.osbp.dsl.datatype.xtext.ide/about.properties
index 2b2129a..c03d7d1 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/about.properties
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying material
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributor
 #  Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 \n\
 Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\n\
 All rights reserved. This program and the accompanying material\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available \n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributor\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/build.properties b/org.eclipse.osbp.dsl.datatype.xtext.ide/build.properties
index 6b2b7c0..2a78679 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/build.properties
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/build.properties
@@ -3,7 +3,7 @@
                about.ini,\
                about.html,\
                LICENSE.txt,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html
 bin.includes = about.properties,\
                about.mappings,\
@@ -11,7 +11,7 @@
                about.html,\
                .,\
                META-INF/,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                LICENSE.txt
 source.. = src/,\
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/epl-2.0.html b/org.eclipse.osbp.dsl.datatype.xtext.ide/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/epl-v10.html b/org.eclipse.osbp.dsl.datatype.xtext.ide/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/license.html b/org.eclipse.osbp.dsl.datatype.xtext.ide/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/license.html
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/pom.xml b/org.eclipse.osbp.dsl.datatype.xtext.ide/pom.xml
index e1a0c57..6b06e9e 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/pom.xml
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/pom.xml
@@ -2,9 +2,11 @@
 <!--#======================================================================= -->
 <!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
 <!--# All rights reserved. This program and the accompanying materials -->
-<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/AbstractDatatypeGrammarIdeModule.java b/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/AbstractDatatypeGrammarIdeModule.java
index 6b7db67..ec2aabe 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/AbstractDatatypeGrammarIdeModule.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/AbstractDatatypeGrammarIdeModule.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/DatatypeGrammarParser.java b/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/DatatypeGrammarParser.java
index a39c183..35f8384 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/DatatypeGrammarParser.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/DatatypeGrammarParser.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/PartialDatatypeGrammarContentAssistParser.java b/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/PartialDatatypeGrammarContentAssistParser.java
index 117fefe..483f9e0 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/PartialDatatypeGrammarContentAssistParser.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/PartialDatatypeGrammarContentAssistParser.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/internal/InternalDatatypeGrammarLexer.java b/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/internal/InternalDatatypeGrammarLexer.java
index cb2e3ff..54cd32b 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/internal/InternalDatatypeGrammarLexer.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/internal/InternalDatatypeGrammarLexer.java
@@ -1,3 +1,19 @@
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
+ * generated by Xtext 2.11.0
+
+ */
+
 package org.eclipse.osbp.dsl.datatype.xtext.ide.contentassist.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/internal/InternalDatatypeGrammarParser.java b/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/internal/InternalDatatypeGrammarParser.java
index 7d710ab..413af06 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/internal/InternalDatatypeGrammarParser.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ide/contentassist/antlr/internal/InternalDatatypeGrammarParser.java
@@ -23,9 +23,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/src/org/eclipse/osbp/dsl/datatype/xtext/ide/DatatypeGrammarIdeModule.java b/org.eclipse.osbp.dsl.datatype.xtext.ide/src/org/eclipse/osbp/dsl/datatype/xtext/ide/DatatypeGrammarIdeModule.java
index cb8ff7a..a84dc2e 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/src/org/eclipse/osbp/dsl/datatype/xtext/ide/DatatypeGrammarIdeModule.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/src/org/eclipse/osbp/dsl/datatype/xtext/ide/DatatypeGrammarIdeModule.java
@@ -1,5 +1,17 @@
-/*
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
  * generated by Xtext 2.11.0
+
  */
 package org.eclipse.osbp.dsl.datatype.xtext.ide;
 
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ide/src/org/eclipse/osbp/dsl/datatype/xtext/ide/DatatypeGrammarIdeSetup.java b/org.eclipse.osbp.dsl.datatype.xtext.ide/src/org/eclipse/osbp/dsl/datatype/xtext/ide/DatatypeGrammarIdeSetup.java
index df7417f..1b0e111 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ide/src/org/eclipse/osbp/dsl/datatype/xtext/ide/DatatypeGrammarIdeSetup.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ide/src/org/eclipse/osbp/dsl/datatype/xtext/ide/DatatypeGrammarIdeSetup.java
@@ -1,5 +1,17 @@
-/*
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
  * generated by Xtext 2.11.0
+
  */
 package org.eclipse.osbp.dsl.datatype.xtext.ide;
 
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.tests/epl-2.0.html b/org.eclipse.osbp.dsl.datatype.xtext.tests/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.tests/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.tests/epl-v10.html b/org.eclipse.osbp.dsl.datatype.xtext.tests/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.datatype.xtext.tests/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.tests/license.html b/org.eclipse.osbp.dsl.datatype.xtext.tests/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.tests/license.html
+++ b/org.eclipse.osbp.dsl.datatype.xtext.tests/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.tests/pom.xml b/org.eclipse.osbp.dsl.datatype.xtext.tests/pom.xml
index 7d55404..a84b4ee 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.tests/pom.xml
+++ b/org.eclipse.osbp.dsl.datatype.xtext.tests/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.tests/src-gen/org/eclipse/osbp/dsl/datatype/xtext/tests/DatatypeGrammarInjectorProvider.java b/org.eclipse.osbp.dsl.datatype.xtext.tests/src-gen/org/eclipse/osbp/dsl/datatype/xtext/tests/DatatypeGrammarInjectorProvider.java
index 9d1d548..7270e65 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.tests/src-gen/org/eclipse/osbp/dsl/datatype/xtext/tests/DatatypeGrammarInjectorProvider.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext.tests/src-gen/org/eclipse/osbp/dsl/datatype/xtext/tests/DatatypeGrammarInjectorProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/LICENSE.txt b/org.eclipse.osbp.dsl.datatype.xtext.ui/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ui/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/about.html b/org.eclipse.osbp.dsl.datatype.xtext.ui/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ui/about.html
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/about.properties b/org.eclipse.osbp.dsl.datatype.xtext.ui/about.properties
index f2357ef..a13c27b 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ui/about.properties
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 #  Florian Pirchner - Initial implementation
@@ -22,9 +24,11 @@
 \n\
 Copyright (c) 2011, 2015 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/build.properties b/org.eclipse.osbp.dsl.datatype.xtext.ui/build.properties
index b12a7d9..6517be2 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ui/build.properties
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/build.properties
@@ -8,7 +8,7 @@
                META-INF/,\
                .,\
                plugin.xml,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                icons/,\
                src/,\
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/epl-2.0.html b/org.eclipse.osbp.dsl.datatype.xtext.ui/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/epl-v10.html b/org.eclipse.osbp.dsl.datatype.xtext.ui/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.datatype.xtext.ui/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/license.html b/org.eclipse.osbp.dsl.datatype.xtext.ui/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ui/license.html
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/pom.xml b/org.eclipse.osbp.dsl.datatype.xtext.ui/pom.xml
index 93a7678..fc28dd0 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ui/pom.xml
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index 574f427..a9c214c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 5871cda..89c761a 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 699ff9b..cd45dcf 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/internal/XtextActivator.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/internal/XtextActivator.java
index 5d062ff..a35bea2 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/internal/XtextActivator.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/internal/XtextActivator.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index d78e914..05728d8 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index b68bd26..bea1ed4 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/LICENSE.txt b/org.eclipse.osbp.dsl.datatype.xtext/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.datatype.xtext/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/about.html b/org.eclipse.osbp.dsl.datatype.xtext/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/about.html
+++ b/org.eclipse.osbp.dsl.datatype.xtext/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/about.properties b/org.eclipse.osbp.dsl.datatype.xtext/about.properties
index 6248eb9..db1f655 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/about.properties
+++ b/org.eclipse.osbp.dsl.datatype.xtext/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 #  Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 \n\
 Copyright (c) 2011, 2015 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/build.properties b/org.eclipse.osbp.dsl.datatype.xtext/build.properties
index 8a712ac..dd1b57c 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/build.properties
+++ b/org.eclipse.osbp.dsl.datatype.xtext/build.properties
@@ -3,6 +3,6 @@
            xtend-gen/
 bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
                .,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html
 output.. = target/classes
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/epl-2.0.html b/org.eclipse.osbp.dsl.datatype.xtext/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/epl-v10.html b/org.eclipse.osbp.dsl.datatype.xtext/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.datatype.xtext/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/license.html b/org.eclipse.osbp.dsl.datatype.xtext/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/license.html
+++ b/org.eclipse.osbp.dsl.datatype.xtext/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/pom.xml b/org.eclipse.osbp.dsl.datatype.xtext/pom.xml
index d7160e8..d8ed59a 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/pom.xml
+++ b/org.eclipse.osbp.dsl.datatype.xtext/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index a5abe95..4a386f0 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 84a01f6..07d082c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 9b38230..f2719f9 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index c0508f8..73762d3 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 7a6e17f..e57118f 100644
--- 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
@@ -1,3 +1,18 @@
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
+ * generated by Xtext 2.11.0
+
+ */
 package org.eclipse.osbp.dsl.datatype.xtext.parser.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
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
index 60dd8cd..6aa8d46 100644
--- 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
@@ -23,9 +23,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/scoping/AbstractDatatypeGrammarScopeProvider.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/scoping/AbstractDatatypeGrammarScopeProvider.java
index 2a30ff3..c158c21 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/scoping/AbstractDatatypeGrammarScopeProvider.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/scoping/AbstractDatatypeGrammarScopeProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSemanticSequencer.java
index 4dafdcb..4c303ac 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSemanticSequencer.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSemanticSequencer.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSyntacticSequencer.java
index c627bf6..dfb27c1 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSyntacticSequencer.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSyntacticSequencer.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index c9d8e63..7918401 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/validation/AbstractDatatypeGrammarValidator.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/validation/AbstractDatatypeGrammarValidator.java
index 6a7e6aa..604b331 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/validation/AbstractDatatypeGrammarValidator.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/validation/AbstractDatatypeGrammarValidator.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 436a4cc..3ba4e8f 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 86f197d..69fba92 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index fc2397b..077a28c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 82918dd..dc927c5 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 4fb2ed5..20cf717 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index e1545ea..27f3bfb 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 var FileHeaderText = "/**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/MavenGenerateDatatypeGrammar.mwe2 b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/MavenGenerateDatatypeGrammar.mwe2
new file mode 100644
index 0000000..756e842
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/MavenGenerateDatatypeGrammar.mwe2
@@ -0,0 +1,159 @@
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * 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 fileHeaderText = "/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
+ * generated by Xtext \${version}\n
+ */
+"
+var fileExtensions = "datatypes"
+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 {
+		resourceSet = org.eclipse.xtext.resource.XtextResourceSet : theResourceSet {}
+
+		// add mappings from platform:/resource to classpath:/
+		uriMap = {
+			from = "platform:/resource/org.eclipse.xtext.xbase/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.xtext.xbase.lib/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.xtext.common.types/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.emf.ecore.xcore/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.emf.ecore.xcore.lib/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.osbp.dsl.semantic.common/"
+			to = "classpath:/"
+		}
+
+		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"
+	}
+
+	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"
+			fileExtensions = fileExtensions
+			fragment = grammarAccess.GrammarAccessFragment {}
+			fragment = serializer.SerializerFragment {
+			// generateDebugData = true
+			}
+			fragment = resourceFactory.ResourceFactoryFragment {
+				fileExtensions = fileExtensions
+			}
+			fragment = XtextAntlrGeneratorFragment {
+				options = auto-inject {}
+			}
+			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 = auto-inject {}
+			}
+			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
index 336e7f7..3f8531f 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 24f4f86..9a0eb95 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors: 
  * 		Florian Pirchner - Initial implementation
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
index 9199eaa..779f276 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors: 
  * 		Florian Pirchner - Initial implementation
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
index ef0aa72..90fcea3 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/scoping/DatatypeGrammarScopeProvider.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/scoping/DatatypeGrammarScopeProvider.java
index f882e8f..f691441 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/scoping/DatatypeGrammarScopeProvider.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/scoping/DatatypeGrammarScopeProvider.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/validation/DatatypeGrammarValidator.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/validation/DatatypeGrammarValidator.java
index 2c4b22c..1eb092b 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/validation/DatatypeGrammarValidator.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/validation/DatatypeGrammarValidator.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index c01d4a4..74bc612 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.lib/LICENSE.txt b/org.eclipse.osbp.dsl.dto.lib/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.dto.lib/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.dto.lib/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.dto.lib/about.html b/org.eclipse.osbp.dsl.dto.lib/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.dto.lib/about.html
+++ b/org.eclipse.osbp.dsl.dto.lib/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.dto.lib/about.properties b/org.eclipse.osbp.dsl.dto.lib/about.properties
index 78a3e7c..11440f9 100644
--- a/org.eclipse.osbp.dsl.dto.lib/about.properties
+++ b/org.eclipse.osbp.dsl.dto.lib/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 #  Florian Pirchner - Initial implementation
@@ -19,9 +21,11 @@
 \n\
 Copyright (c) 2011, 2015 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.dto.lib/build.properties b/org.eclipse.osbp.dsl.dto.lib/build.properties
index 5e02a4f..2ad05fa 100644
--- a/org.eclipse.osbp.dsl.dto.lib/build.properties
+++ b/org.eclipse.osbp.dsl.dto.lib/build.properties
@@ -1,6 +1,6 @@
 bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
                .,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                .project,\
                .classpath,\
@@ -10,6 +10,6 @@
 output.. = target/classes
 source.. = src/
 src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                README.txt
diff --git a/org.eclipse.osbp.dsl.dto.lib/epl-2.0.html b/org.eclipse.osbp.dsl.dto.lib/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.lib/epl-v10.html b/org.eclipse.osbp.dsl.dto.lib/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.dto.lib/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.lib/license.html b/org.eclipse.osbp.dsl.dto.lib/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.dto.lib/license.html
+++ b/org.eclipse.osbp.dsl.dto.lib/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.dto.lib/pom.xml b/org.eclipse.osbp.dsl.dto.lib/pom.xml
index 6c75c38..4746986 100644
--- a/org.eclipse.osbp.dsl.dto.lib/pom.xml
+++ b/org.eclipse.osbp.dsl.dto.lib/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index da67316..5c77316 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -33,35 +35,37 @@
 import org.eclipse.osbp.dsl.common.datatypes.IDto;
 import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
 import org.eclipse.osbp.jpa.services.Query;
+import org.eclipse.osbp.jpa.services.filters.LAnd;
 import org.eclipse.osbp.jpa.services.filters.LCompare;
+import org.eclipse.osbp.jpa.services.filters.LCompare.Equal;
 import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
 import org.eclipse.osbp.runtime.common.filter.IDTOService;
 import org.eclipse.osbp.runtime.common.hash.HashUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public abstract class AbstractOppositeDtoList<D extends IDto> extends ArrayList<D>
 		implements IEntityMappingList<D>, PropertyChangeListener, Serializable {
 
-	private static final String NOT_SUPPORTED_FOR_NOW = "Not supported for now.";
+	protected static final String NOT_SUPPORTED_FOR_NOW = "Not supported for now.";
 	private static final long serialVersionUID = -5777389952283179658L;
 
-	private static Logger LOGGER = LoggerFactory.getLogger(AbstractOppositeDtoList.class);
+	protected final Class<?> dtoType;
+	protected final String parentProperty;
+	protected final transient Supplier<Object> idSupplier;
+	protected final transient PropertyChangeListener childListener;
 
-	private final Class<?> dtoType;
-	private final String parentProperty;
-	private final transient Supplier<Object> idSupplier;
-	private final transient PropertyChangeListener childListener;
+	protected boolean immutableCopy;
 
-	private boolean resolved;
-	private boolean resolving;
+	protected boolean resolved;
+	protected boolean resolving;
 
-	private transient Map<Object, D> addedToSuper = new HashMap<>();
-	private transient Map<Object, D> added = new HashMap<>();
-	private transient Map<Object, D> removed = new HashMap<>();
-	private transient Map<Object, D> updated = new HashMap<>();
+	protected transient Map<Object, D> addedToSuper = new HashMap<>();
+	protected transient Map<Object, D> added = new HashMap<>();
+	protected transient Map<Object, D> removed = new HashMap<>();
+	protected transient Map<Object, D> updated = new HashMap<>();
+	protected transient Map<Object, D> persistent = new HashMap<>();
 
-	private MappingContext mappingContext;
+	protected MappingContext mappingContext;
+	protected transient PropertyChangeListener containerListener;
 
 	public AbstractOppositeDtoList(MappingContext mappingContext, Class<?> dtoType, String parentProperty,
 			Supplier<Object> idSupplier, PropertyChangeListener containerListener) {
@@ -70,6 +74,7 @@
 		this.dtoType = dtoType;
 		this.idSupplier = idSupplier;
 		this.parentProperty = parentProperty;
+		this.containerListener = containerListener;
 
 		childListener = (e) -> {
 			containerListener.propertyChange(e);
@@ -89,8 +94,13 @@
 		return new ArrayList<>(updated.values());
 	}
 
+	public List<D> getAddedToSuper() {
+		return new ArrayList<>(addedToSuper.values());
+	}
+
 	/**
 	 * Notifies the container of this list in case of cascading reference.
+	 * 
 	 * @param changedDto
 	 */
 	protected void notifyContainer(D changedDto) {
@@ -117,8 +127,8 @@
 			Collection<D> dtos = (Collection<D>) service.find(query);
 
 			// remove the removed from the added
-			for (D removed : getRemoved()) {
-				String hash = hashDto(removed);
+			for (D rmvd : getRemoved()) {
+				String hash = hashDto(rmvd);
 				added.remove(hash);
 
 				// remove from super
@@ -148,19 +158,23 @@
 							D instance = tempAdded.get(hashCode);
 							super.add(instance);
 							addedToSuper.put(hashCode, instance);
+							persistent.put(hashCode, instance);
 							tempAdded.remove(hashCode);
 						} else {
 							// otherwise we add the persistent dto
 							super.add(dto);
-
 							addedToSuper.put(hashCode, dto);
+							persistent.put(hashCode, dto);
 
-							// register property change listener to the
-							// persisted dto
-							if (DtoUtils.getAdapter(getClass(), dto) == null) {
-								DtoUtils.registerAdapter(this, dto);
+							// do not add listeners for immutable copies
+							if (!immutableCopy) {
+								// register property change listener to the
+								// persisted dto
+								if (DtoUtils.getAdapter(getClass(), dto) == null) {
+									DtoUtils.registerAdapter(this, dto);
+								}
+								dto.addPropertyChangeListener(childListener);
 							}
-							dto.addPropertyChangeListener(childListener);
 						}
 					}
 				}
@@ -182,6 +196,15 @@
 		}
 	}
 
+	public boolean isPersistent(D dto) {
+		String hash = hashDto(dto);
+		if (resolved) {
+			return persistent.containsKey(hash);
+		} else {
+			return containsInDatabase(dto);
+		}
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -203,18 +226,18 @@
 			// 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));
+			for (D add : getAdded()) {
+				E addedE = mappingContext.get(childMapper.createEntityHash(add));
 				if (addedE == null) {
 					addedE = childMapper.createEntity();
-					childMapper.mapToEntity(added, addedE, mappingContext);
+					childMapper.mapToEntity(add, addedE, mappingContext);
 				}
 				oppositeAdder.accept(addedE);
 
 				if (isResolved()) {
-					if (!super.contains(added)) {
-						super.add(added);
-						addedToSuper.put(hashDto(added), added);
+					if (!super.contains(add)) {
+						super.add(add);
+						addedToSuper.put(hashDto(add), add);
 					}
 				}
 			}
@@ -263,7 +286,7 @@
 
 				// add
 				//
-//				modifiedE = childMapper.createEntity();
+				// modifiedE = childMapper.createEntity();
 				childMapper.mapToEntity(modified, modifiedE, mappingContext);
 				mappingContext.register(childMapper.createEntityHash(modified), modifiedE);
 				oppositeAdder.accept(modifiedE);
@@ -332,11 +355,21 @@
 	@Override
 	public boolean add(D dto) {
 
+		checkImmutable();
+
 		dto.addPropertyChangeListener(childListener);
 
 		String hash = hashDto(dto);
 		removed.remove(hash);
-		added.put(hash, dto);
+
+//		if (!isPersistent(dto)) {
+			// we do not add persistent dtos twice. They are already in the
+			// database.
+			added.put(hash, dto);
+//		} else {
+//			// rather we put them in updated state
+//			updated.put(hash, dto);
+//		}
 
 		// notify the container that detail changed
 		notifyContainer(dto);
@@ -353,6 +386,12 @@
 		}
 	}
 
+	protected void checkImmutable() {
+		if (immutableCopy) {
+			throw new IllegalStateException("No modifications allowed for immutableCopy list.");
+		}
+	}
+
 	@Override
 	public void add(int arg0, D dto) {
 		add(dto);
@@ -367,6 +406,15 @@
 		return result;
 	}
 
+	/**
+	 * Used for copy list
+	 * 
+	 * @param dtos
+	 */
+	protected void internalAddAll(Collection<? extends D> dtos) {
+		super.addAll(dtos);
+	}
+
 	@Override
 	public boolean addAll(int arg0, Collection<? extends D> dtos) {
 		boolean result = true;
@@ -383,34 +431,58 @@
 		removed.clear();
 	}
 
-	@Override
-	public Object clone() {
-		resolve();
-		return super.clone();
+	protected abstract AbstractOppositeDtoList<D> newInstance();
+
+	public AbstractOppositeDtoList<D> copy() {
+
+		AbstractOppositeDtoList<D> clone = newInstance();
+		clone.resolved = resolved;
+		clone.immutableCopy = true;
+
+		// only add super#list to the clone if resolved. Otherwise this list
+		// will resolve.
+		if (resolved) {
+			clone.internalAddAll(this);
+		}
+
+		clone.added.putAll(added);
+		clone.removed.putAll(removed);
+		clone.updated.putAll(updated);
+		clone.addedToSuper.putAll(addedToSuper);
+		clone.mappingContext = mappingContext;
+
+		return clone;
 	}
 
 	@SuppressWarnings("unchecked")
 	@Override
-	public boolean contains(Object arg0) {
-		String hash = hashDto((D) arg0);
-		if (getAdded().contains(hash)) {
+	public boolean contains(Object dto) {
+		String hash = hashDto((D) dto);
+		if (added.containsKey(hash)) {
 			return true;
 		}
 
-		if (getRemoved().contains(hash)) {
+		if (removed.containsKey(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;
+			return containsInDatabase(dto);
 		}
 	}
 
+	@SuppressWarnings("unchecked")
+	protected boolean containsInDatabase(Object dto) {
+		IDTOService<D> service = (IDTOService<D>) DtoServiceAccess.getService(dtoType);
+		Object id = service.getId((D) dto);
+		Equal idEquals = new LCompare.Equal(DtoUtils.getIdField(dtoType).getName(), id);
+		Equal parentEquals = new LCompare.Equal(parentProperty, idSupplier.get());
+		Query query = new Query(new LAnd(idEquals, parentEquals));
+		return service.contains(query);
+	}
+
 	@Override
 	public void forEach(Consumer<? super D> arg0) {
 		resolve();
@@ -460,6 +532,9 @@
 
 	@Override
 	public D remove(int arg0) {
+
+		checkImmutable();
+
 		// now we need to resolve, since we got an index...
 		resolve();
 		D result = super.remove(arg0);
@@ -480,10 +555,33 @@
 	@SuppressWarnings("unchecked")
 	@Override
 	public boolean remove(Object dto) {
+
+		checkImmutable();
+
 		String hash = hashDto((D) dto);
-		removed.put(hash, (D) dto);
-		added.remove(hash);
-		updated.remove(hash);
+
+		if (!resolved) {
+			// we can not remove persistent dtos since they have not been loaded
+			// yet. So only check the removed, added and updated
+			added.remove(hash);
+			updated.remove(hash);
+		} else {
+			if (added.containsKey(hash)) {
+				// in this case we added a new dto, so just remove it from the
+				// added map again. We do not need to store the dto in the
+				// removed map for later processing. Dto is a transient dto and
+				// not stored in DB yet.
+				added.remove(hash);
+				updated.remove(hash);
+			} else if (addedToSuper.containsKey(hash)) {
+				// the removed element is part of the persistent elements. So we
+				// need to store the removed element in the removed map. For
+				// later processing.
+				removed.put(hash, (D) dto);
+				updated.remove(hash);
+			}
+		}
+
 		DtoUtils.unregisterAdapter(this, dto);
 		((IDto) dto).removePropertyChangeListener(childListener);
 
@@ -501,6 +599,9 @@
 	@SuppressWarnings("unchecked")
 	@Override
 	public boolean removeAll(Collection<?> arg0) {
+
+		checkImmutable();
+
 		boolean result = true;
 		for (Object x : arg0) {
 			D dto = (D) x;
@@ -531,6 +632,7 @@
 
 	@Override
 	public D set(int arg0, D arg1) {
+		checkImmutable();
 		resolve();
 		D dto = super.set(arg0, arg1);
 		removed.put(hashDto(dto), dto);
@@ -547,12 +649,31 @@
 		}
 		IDTOService<?> service = DtoServiceAccess.getService(dtoType);
 
+		checkSanity();
+
+		// in case of NOT resolved, we can use a query to calculate the size.
+		// size in DB + addedDtos - removedDtos --> In normal case,
 		Query query = new Query(new LCompare.Equal(parentProperty, idSupplier.get()));
 		return service.size(query) + getAdded().size() - getRemoved().size();
 	}
 
+	/**
+	 * Checks whether this list is in a bad state.
+	 * 
+	 * @throws IllegalArgumentException
+	 */
+	protected void checkSanity() throws IllegalArgumentException {
+		if (!resolved) {
+			if (!getRemoved().isEmpty()) {
+				throw new IllegalArgumentException(
+						"Non resolved lists may not contain removed elements. These elements can only by transient dtos. So elements needed to be added first. But removing transient elements from the added map will not store them in the removed map.");
+			}
+		}
+	}
+
 	@Override
 	public void sort(Comparator<? super D> arg0) {
+		checkImmutable();
 		resolve();
 		super.sort(arg0);
 	}
@@ -583,6 +704,8 @@
 
 	@Override
 	public void trimToSize() {
+		checkImmutable();
+
 		resolve();
 		super.trimToSize();
 	}
@@ -597,16 +720,43 @@
 		return true;
 	}
 
+	@SuppressWarnings("unchecked")
 	@Override
 	public boolean equals(Object o) {
-		if (added.size() > 0 || removed.size() > 0) {
+		AbstractOppositeDtoList<D> other = (AbstractOppositeDtoList<D>) o;
+		if (other.added.size() != added.size()) {
 			return false;
 		}
 
-		LOGGER.error("equals - Check what to do here!");
-		return super.equals(o);
+		if (other.removed.size() != removed.size()) {
+			return false;
+		}
+
+		if (other.updated.size() != updated.size()) {
+			return false;
+		}
+
+		boolean equals = other.added.equals(added);
+		if (!equals) {
+			return false;
+		}
+
+		equals = other.removed.equals(removed);
+		if (!equals) {
+			return false;
+		}
+
+		equals = other.updated.equals(updated);
+		if (!equals) {
+			return false;
+		}
+
+		if (other.resolved && resolved) {
+			return super.equals(o);
+		}
+		return true;
 	}
-	
+
 	@Override
 	public int hashCode() {
 		return super.hashCode();
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
index 3037db8..3759dcc 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 03136cb..22b3f92 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index c5bca06..d4d3da6 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 93b8686..15757ae 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index ffb4233..9c7da1a 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 70a7109..d6cfc65 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 21c4fc8..20864ad 100644
--- 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
@@ -1,3 +1,18 @@
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
+ * generated by Xtext 2.11.0
+
+ */
 package org.eclipse.osbp.dsl.dto.lib;
 
 import java.util.List;
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
index d1eaa65..f259269 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 92ab543..71f642e 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 4b5d8da..75031b2 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -20,6 +22,7 @@
 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.session.IMappingContext;
 import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,7 +41,7 @@
  * The option {@link #isUseDirtyAdapter()} indicates, that a
  * {@link DirtyStateAdapter} is added to any registered dtos.
  */
-public class MappingContext implements Serializable {
+public class MappingContext implements IMappingContext, Serializable {
 
 	private static final long serialVersionUID = 8983308985143365450L;
 	@SuppressWarnings("unused")
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
index 1e2f284..09a0a73 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -22,13 +24,19 @@
 
 	private IDto containerDto;
 
-	public OppositeContainmentDtoList(MappingContext mappingContext,
-			Class<?> dtoType, IDto containerDto, String parentProperty, Supplier<Object> idSupplier, PropertyChangeListener containerListener) {
+	public OppositeContainmentDtoList(MappingContext mappingContext, Class<?> dtoType, IDto containerDto,
+			String parentProperty, Supplier<Object> idSupplier, PropertyChangeListener containerListener) {
 		super(mappingContext, dtoType, parentProperty, idSupplier, containerListener);
 		this.containerDto = containerDto;
 	}
-	
+
 	protected void notifyContainer(D changedDto) {
 		DtoUtils.invokeDirtySetter(containerDto, true);
 	}
+
+	@Override
+	protected OppositeContainmentDtoList<D> newInstance() {
+		return new OppositeContainmentDtoList<D>(mappingContext, dtoType, containerDto, parentProperty, idSupplier,
+				containerListener);
+	}
 }
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
index 5d023b5..22f011a 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -23,4 +25,10 @@
 			Supplier<Object> idSupplier, PropertyChangeListener containerListener) {
 		super(mappingContext, dtoType, parentProperty, idSupplier, containerListener);
 	}
+	
+	@Override
+	protected OppositeDtoList<D> newInstance() {
+		return new OppositeDtoList<D>( mappingContext,  dtoType,  parentProperty,
+				idSupplier,  containerListener);
+	}
 }
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
index 6db919b..9998538 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 6f41f25..703baf8 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -36,7 +38,6 @@
 	@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());
 
@@ -58,7 +59,6 @@
 		} catch (InvalidSyntaxException e) {
 			LOGGER.error("{}", e);
 		} finally {
-			logger.stop("Accessing mapper took: ");
 		}
 
 		LOGGER.error("No To-Dto-Mapper available for dto: {} and entity: {}",
@@ -70,7 +70,6 @@
 	@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());
 
@@ -92,7 +91,6 @@
 		} catch (InvalidSyntaxException e) {
 			LOGGER.error("{}", e);
 		} finally {
-			logger.stop("Accessing mapper took: ");
 		}
 
 		LOGGER.error(
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
index bb28deb..bcb0585 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -18,17 +20,15 @@
 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.persistence.LockModeType;
 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;
@@ -37,24 +37,16 @@
 import org.eclipse.osbp.jpa.services.Query;
 import org.eclipse.osbp.jpa.services.metadata.EntityDelegate;
 import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
-import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
-import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherCommand;
-import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherDataTag;
-import org.eclipse.osbp.runtime.common.event.IEventDispatcher;
 import org.eclipse.osbp.runtime.common.filter.DtoServiceException;
 import org.eclipse.osbp.runtime.common.filter.IFilterEnhancer;
 import org.eclipse.osbp.runtime.common.filter.IJPQL;
 import org.eclipse.osbp.runtime.common.filter.IQuery;
 import org.eclipse.osbp.runtime.common.session.ISessionManager;
+import org.eclipse.osbp.runtime.common.session.ITransactionHandler;
 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;
-import org.eclipse.persistence.sessions.changesets.ObjectChangeSet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -70,10 +62,10 @@
 public abstract class AbstractDTOService<DTO, ENTITY>
 		implements org.eclipse.osbp.runtime.common.filter.IDTOService<DTO> {
 
-	private static Logger LOGGER = LoggerFactory.getLogger(AbstractDTOService.class);
+	protected static Logger LOGGER = LoggerFactory.getLogger(AbstractDTOService.class);
 
 	/** The emf. */
-	private EntityManagerFactory emf;
+	protected EntityManagerFactory emf;
 
 	/** The mapper access. */
 	protected IMapperAccess mapperAccess;
@@ -81,10 +73,10 @@
 	protected ISessionManager sessionManager;
 
 	/** The validators. */
-	private HashSet<IValidationParticipant> validators = new HashSet<IValidationParticipant>();
+	protected HashSet<IValidationParticipant> validators = new HashSet<IValidationParticipant>();
 
 	/** The filter enhancers. */
-	private HashSet<IFilterEnhancer> filterEnhancers = new HashSet<IFilterEnhancer>();
+	protected HashSet<IFilterEnhancer> filterEnhancers = new HashSet<IFilterEnhancer>();
 
 	/**
 	 * Returns a new instance of JPQL.
@@ -120,6 +112,9 @@
 	 */
 	public abstract Object getId(DTO dto);
 
+	public DTO get(final Object id) {
+		return get(id, null, LockModeType.NONE);
+	}
 	/**
 	 * Gets the DTO.
 	 *
@@ -127,23 +122,18 @@
 	 *            the id
 	 * @return the dto
 	 */
-	public DTO get(final Object id) {
+	public DTO get(final Object id, Object ui, LockModeType lockModeType) {
 		// if id is filtered - return null
 		if(!checkGet(getEntityClass(), id)) {
 			return null;
 		}
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(ui);
 		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);
+			ENTITY entity = delegate.getEntity(id, lockModeType);
 			if (entity != null) {
 				IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(), (Class<ENTITY>) entity.getClass());
 				MappingContext mappingContext = createMappingContext();
@@ -157,7 +147,7 @@
 				}
 			}
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return result;
@@ -226,8 +216,12 @@
 	 * @return the collection
 	 */
 	public Collection<DTO> find(final IQuery query) {
+		return find(query, null, LockModeType.NONE);
+	}
+	
+	public Collection<DTO> find(final IQuery query, Object ui, LockModeType lockModeType) {
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, PROP_MAX_COLLECTION_CONTENT);
 
 		List<DTO> result = new ArrayList<DTO>();
@@ -235,7 +229,7 @@
 			MappingContext mappingContext = createMappingContext();
 			try {
 				mappingContext.increaseLevel();
-				for (ENTITY entity : delegate.getAllEntities(query)) {
+				for (ENTITY entity : delegate.getAllEntities(query, lockModeType)) {
 					IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(), (Class<ENTITY>) entity.getClass());
 					result.add(mapSingle(entity, mapper, mappingContext));
 				}
@@ -245,7 +239,7 @@
 				mappingContext.unmakeCurrent();
 			}
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return result;
@@ -261,8 +255,12 @@
 	 * @return the collection
 	 */
 	public Collection<DTO> find(final IQuery query, final int startindex) {
+		return find(query, null, LockModeType.NONE);
+	}
+	
+	public Collection<DTO> find(final IQuery query, final int startindex, Object ui, LockModeType lockModeType) {
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, PROP_MAX_COLLECTION_CONTENT);
 
 		List<DTO> result = new ArrayList<DTO>();
@@ -270,7 +268,7 @@
 			MappingContext mappingContext = createMappingContext();
 			try {
 				mappingContext.increaseLevel();
-				for (ENTITY entity : delegate.getAllEntities(query, startindex)) {
+				for (ENTITY entity : delegate.getAllEntities(query, startindex, lockModeType)) {
 					IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(), (Class<ENTITY>) entity.getClass());
 					result.add(mapSingle(entity, mapper, mappingContext));
 				}
@@ -280,7 +278,7 @@
 				mappingContext.unmakeCurrent();
 			}
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return result;
@@ -288,7 +286,7 @@
 
 	@Override
 	public Collection<DTO> findDtos(IJPQL jpql) {
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(null);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, PROP_MAX_COLLECTION_CONTENT);
 
 		List<DTO> result = new ArrayList<DTO>();
@@ -306,7 +304,7 @@
 				mappingContext.unmakeCurrent();
 			}
 		} finally {
-			em.close();
+			closeEntityManager(em, null);
 		}
 
 		return result;
@@ -314,12 +312,12 @@
 
 	@Override
 	public List<?> findValues(IJPQL jpql) {
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(null);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, PROP_MAX_COLLECTION_CONTENT);
 		try {
 			return delegate.getAllValues(jpql);
 		} finally {
-			em.close();
+			closeEntityManager(em, null);
 		}
 	}
 
@@ -330,18 +328,14 @@
 	 *            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, sessionManager);
+		TransactionHandler txn = new TransactionHandler(emf, sessionManager);
 
 		try {
 			ENTITY entity = null;
 			MappingContext entityMappingContext = new MappingContext();
 			entityMappingContext.makeCurrent();
-			entityMappingContext.setEntityManager(em);
+			entityMappingContext.setEntityManager(txn.getEntityManager());
 			// do not resolve any dto-lazyloading-list during mapping
 			entityMappingContext.setNoCollectionResolving(true);
 			try {
@@ -354,7 +348,7 @@
 
 				Object id = getId(dto); 
 				if (!(id instanceof Integer) || ((Integer) id).intValue() != 0) {
-					entity = em.find(getEntityClass(), id);
+					entity = txn.getEntityManager().find(getEntityClass(), id);
 					if (entity == null) {
 						entity = toEntityMapper.createEntity();
 					}
@@ -364,10 +358,10 @@
 
 				// map dto to entity and persist
 				toEntityMapper.mapToEntity(dto, entity, entityMappingContext);
-				entity = em.merge(entity);
+				entity = txn.getEntityManager().merge(entity);
 
 				if (entity != null && id instanceof Integer && ((Integer) id).intValue() == 0) {
-					Object newId = new EntityDelegate<ENTITY>(getEntityClass(), em, PROP_MAX_COLLECTION_CONTENT)
+					Object newId = new EntityDelegate<ENTITY>(getEntityClass(), txn.getEntityManager(), PROP_MAX_COLLECTION_CONTENT)
 							.getIdentifier(entity);
 					DtoUtils.setIdValue(dto, newId);
 				}
@@ -376,25 +370,7 @@
 				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) {
@@ -412,8 +388,7 @@
 		} catch (RollbackException e) {
 			throw new ExceptionConverter().convertException(e);
 		} finally {
-			entityTxnObserver.dispose();
-			em.close();
+			txn.dispose();
 		}
 	}
 
@@ -470,43 +445,18 @@
 	 *             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);
+		TransactionHandler txn = new TransactionHandler(emf, sessionManager);
 		try {
-			entityMappingContext.increaseLevel();
-			entityMappingContext.setEntityManager(em);
-
-			TransactionObserver entityTxnObserver = new TransactionObserver(TransactionObserver.DELETE, em,
-					sessionManager);
-
 			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));
+				ENTITY entity = txn.getEntityManager().find(getEntityClass(), getId(dto));
 				if (entity != null) {
-					em.remove(entity);
+					txn.getEntityManager().remove(entity);
 				}
 
 				try {
 					txn.commit();
-					txn = null;
 				} catch (Exception e) {
 					throw new ExceptionConverter().convertException(e);
 				}
@@ -517,11 +467,9 @@
 			} catch (SystemException e) {
 				throw new ExceptionConverter().convertException(e);
 			} finally {
-				entityTxnObserver.dispose();
-				em.close();
+				txn.dispose();
 			}
 		} finally {
-			entityMappingContext.unmakeCurrent();
 		}
 	}
 
@@ -607,22 +555,10 @@
 		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;
+	@Override
+	public int size(IQuery query) {
+		return size(query, null, LockModeType.NONE);
 	}
-
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -631,16 +567,16 @@
 	 * .dsl.dto.lib.services.IQuery)
 	 */
 	@Override
-	public int size(IQuery query) {
+	public int size(IQuery query, Object ui, LockModeType lockModeType) {
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, 1);
 
 		int result = -1;
 		try {
-			result = delegate.getEntityCount(query);
+			result = delegate.getEntityCount(query, lockModeType);
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return result;
@@ -654,33 +590,33 @@
 	 * Object, org.eclipse.osbp.dsl.dto.lib.services.IQuery)
 	 */
 	@Override
-	public boolean contains(Object dto, IQuery query) {
+	public boolean contains(Object dto, IQuery query, Object ui, LockModeType lockModeType) {
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, 1);
 
 		boolean result = false;
 		try {
-			result = delegate.containsEntityIdentifier(dto, query);
+			result = delegate.containsEntityIdentifier(dto, query, lockModeType);
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return result;
 	}
 
 	@Override
-	public boolean contains(IQuery query) {
+	public boolean contains(IQuery query, Object ui, LockModeType lockModeType) {
 
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, 1);
 
 		boolean result = false;
 		try {
-			result = delegate.getEntityCount(query) > 0;
+			result = delegate.getEntityCount(query, lockModeType) > 0;
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return result;
@@ -694,14 +630,14 @@
 	 * Object , org.eclipse.osbp.dsl.dto.lib.services.IQuery)
 	 */
 	@Override
-	public DTO getNext(DTO dto, IQuery query) {
+	public DTO getNext(DTO dto, IQuery query, Object ui, LockModeType lockModeType) {
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, 1);
 
 		DTO result = null;
 		try {
-			ENTITY entity = delegate.getNextEntity(getId(dto), query);
+			ENTITY entity = delegate.getNextEntity(getId(dto), query, lockModeType);
 			if (entity != null) {
 				IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(), (Class<ENTITY>) entity.getClass());
 				MappingContext mappingContext = createMappingContext();
@@ -715,7 +651,7 @@
 				}
 			}
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return result;
@@ -729,14 +665,14 @@
 	 * .Object, org.eclipse.osbp.dsl.dto.lib.services.IQuery)
 	 */
 	@Override
-	public DTO getPrevious(DTO dto, IQuery query) {
+	public DTO getPrevious(DTO dto, IQuery query, Object ui, LockModeType lockModeType) {
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, 1);
 
 		DTO result = null;
 		try {
-			ENTITY entity = delegate.getPreviousEntity(getId(dto), query);
+			ENTITY entity = delegate.getPreviousEntity(getId(dto), query, lockModeType);
 			if (entity != null) {
 				IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(), (Class<ENTITY>) entity.getClass());
 				MappingContext mappingContext = createMappingContext();
@@ -750,12 +686,20 @@
 				}
 			}
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return result;
 	}
 
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.common.filter.IDTOService#getFirst(org.eclipse.osbp.runtime.common.filter.IQuery)
+	 */
+	@Override
+	public DTO getFirst(IQuery query) {
+		return getFirst(query, null, LockModeType.NONE);
+	}
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -764,14 +708,14 @@
 	 * .osbp.dsl.dto.lib.services.IQuery)
 	 */
 	@Override
-	public DTO getFirst(IQuery query) {
+	public DTO getFirst(IQuery query, Object ui, LockModeType lockModeType) {
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, 1);
 
 		DTO result = null;
 		try {
-			ENTITY entity = delegate.getFirstEntity(query);
+			ENTITY entity = delegate.getFirstEntity(query, lockModeType);
 			if (entity != null) {
 				IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(), (Class<ENTITY>) entity.getClass());
 				MappingContext mappingContext = createMappingContext();
@@ -785,12 +729,20 @@
 				}
 			}
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return result;
 	}
 
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.common.filter.IDTOService#getLast(org.eclipse.osbp.runtime.common.filter.IQuery)
+	 */
+	@Override
+	public DTO getLast(IQuery query) {
+		return getLast(query, null, LockModeType.NONE);
+	}
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -799,14 +751,14 @@
 	 * .osbp.dsl.dto.lib.services.IQuery)
 	 */
 	@Override
-	public DTO getLast(IQuery query) {
+	public DTO getLast(IQuery query, Object ui, LockModeType lockModeType) {
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, 1);
 
 		DTO result = null;
 		try {
-			ENTITY entity = delegate.getLastEntity(query);
+			ENTITY entity = delegate.getLastEntity(query, lockModeType);
 			if (entity != null) {
 				IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(), (Class<ENTITY>) entity.getClass());
 				MappingContext mappingContext = createMappingContext();
@@ -820,7 +772,7 @@
 				}
 			}
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return result;
@@ -834,18 +786,23 @@
 	 */
 	@Override
 	public boolean isFirst(DTO dto, IQuery query) {
+		return isFirst(dto, query, null, LockModeType.NONE);
+	}
+	
+	@Override
+	public boolean isFirst(DTO dto, IQuery query, Object ui, LockModeType lockModeType) {
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, 1);
 
 		List<DTO> result = new ArrayList<DTO>();
 		try {
-			String firstId = (String) delegate.getFirstEntityIdentifier(query);
+			String firstId = (String) delegate.getFirstEntityIdentifier(query, lockModeType);
 			if (firstId != null && firstId.equals(getId(dto))) {
 				return true;
 			}
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return false;
@@ -860,18 +817,23 @@
 	 */
 	@Override
 	public boolean isLast(DTO dto, IQuery query) {
+		return isLast(dto, query, null, LockModeType.NONE);
+	}
+	
+	@Override
+	public boolean isLast(DTO dto, IQuery query, Object ui, LockModeType lockModeType) {
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, 1);
 
 		List<DTO> result = new ArrayList<DTO>();
 		try {
-			String lastId = (String) delegate.getLastEntityIdentifier(query);
+			String lastId = (String) delegate.getLastEntityIdentifier(query, lockModeType);
 			if (lastId != null && lastId.equals(getId(dto))) {
 				return true;
 			}
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return false;
@@ -888,6 +850,13 @@
 		return 1;
 	}
 
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.common.filter.IDTOService#getByIndex(int, org.eclipse.osbp.runtime.common.filter.IQuery)
+	 */
+	@Override
+	public DTO getByIndex(int index, IQuery query) {
+		return getByIndex(index, query, null, LockModeType.NONE);
+	}
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -895,9 +864,9 @@
 	 * org.eclipse.osbp.dsl.dto.lib.services.IQuery)
 	 */
 	@Override
-	public DTO getByIndex(int index, IQuery query) {
+	public DTO getByIndex(int index, IQuery query, Object ui, LockModeType lockModeType) {
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, 1);
 
 		DTO result = null;
@@ -905,7 +874,7 @@
 			MappingContext mappingContext = createMappingContext();
 			try {
 				mappingContext.increaseLevel();
-				for (ENTITY entity : delegate.getAllEntities(query, index)) {
+				for (ENTITY entity : delegate.getAllEntities(query, index, lockModeType)) {
 					IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(), (Class<ENTITY>) entity.getClass());
 					result = mapSingle(entity, mapper, mappingContext);
 					break;
@@ -916,12 +885,20 @@
 				mappingContext.unmakeCurrent();
 			}
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return result;
 	}
 
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.common.filter.IDTOService#getByIndex(int, int, org.eclipse.osbp.runtime.common.filter.IQuery)
+	 */
+	@Override
+	public List<DTO> getByIndex(int startIndex, int numberOfItems, IQuery query) {
+		return getByIndex(startIndex, numberOfItems, query, null, LockModeType.NONE);
+	}
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -929,9 +906,9 @@
 	 * int, org.eclipse.osbp.dsl.dto.lib.services.IQuery)
 	 */
 	@Override
-	public List<DTO> getByIndex(int startIndex, int numberOfItems, IQuery query) {
+	public List<DTO> getByIndex(int startIndex, int numberOfItems, IQuery query, Object ui, LockModeType lockModeType) {
 		enhanceFilter(query);
-		javax.persistence.EntityManager em = emf.createEntityManager();
+		javax.persistence.EntityManager em = getEntityManager(ui);
 		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(getEntityClass(), em, numberOfItems);
 
 		List<DTO> result = new ArrayList<DTO>();
@@ -939,7 +916,7 @@
 			MappingContext mappingContext = createMappingContext();
 			try {
 				mappingContext.increaseLevel();
-				for (ENTITY entity : delegate.getAllEntities(query, startIndex)) {
+				for (ENTITY entity : delegate.getAllEntities(query, startIndex, lockModeType)) {
 					IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(), (Class<ENTITY>) entity.getClass());
 					result.add(mapSingle(entity, mapper, mappingContext));
 				}
@@ -949,7 +926,7 @@
 				mappingContext.unmakeCurrent();
 			}
 		} finally {
-			em.close();
+			closeEntityManager(em, ui);
 		}
 
 		return result;
@@ -1059,192 +1036,201 @@
 	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;
-
-		private final ISessionManager sessionManager;
-
-		/**
-		 * 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, ISessionManager sessionManager) {
-			this.type = type;
-			this.em = em;
-			this.sessionManager = sessionManager;
-			((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();
-			Map<ObjectChangeSet, ObjectChangeSet> changeSet = uow.getUnitOfWorkChangeSet().getAllChangeSets();
-			processChangeSet(changeSet, EventDispatcherCommand.SAVE);
-			// delete
-			Map<ObjectChangeSet, ObjectChangeSet> deletedSet = uow.getUnitOfWorkChangeSet().getDeletedObjects();
-			processChangeSet(deletedSet, EventDispatcherCommand.DELETE);
-		}
-
-		private void processChangeSet(Map<ObjectChangeSet, ObjectChangeSet> changeSet,
-				EventDispatcherCommand eventCmd) {
-			for (ObjectChangeSet object : changeSet.values()) {
-				affected.add(object);
-				// insert or update
-				LOGGER.debug("affected:" + object.getClassName() + " id:" + object.getId());
-				sessionManager.asyncAll((s) -> {
-					IEventDispatcher dispatcher = s.get(IEventDispatcher.class);
-					if (dispatcher != null) {
-						EventDispatcherEvent evnt;
-						if (object.isNew()) {
-							evnt = new EventDispatcherEvent(EventDispatcherCommand.REFRESH, object.getClassName(),
-									"DTOService");
-						} else {
-							evnt = new EventDispatcherEvent(eventCmd, object.getClassName(), "DTOService");
-						}
-						evnt.addItem(EventDispatcherDataTag.ID, object.getId());
-						dispatcher.sendEvent(evnt);
-					}
-					return null;
-				});
-			}
-		}
-
-		/**
-		 * 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);
+	
+	@Override
+	public void transactionBegin(Object ui) {
+		TransactionHandler txn = new TransactionHandler(emf, sessionManager);
+		sessionManager.setTransactionHandler(ui, txn);
+//		txn.setEntityMappingContext(entityMappingContext);
+		try {
+			txn.begin();
+		} catch (NamingException e) {
+			throw new ExceptionConverter().convertException(e);
+		} catch (NotSupportedException e) {
+			throw new ExceptionConverter().convertException(e);
+		} catch (SystemException e) {
+			throw new ExceptionConverter().convertException(e);
 		}
 	}
 
-	/**
-	 * 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 {
+	@Override
+	public void transactionCommit(Object ui) {
+		ITransactionHandler txn = sessionManager.getTransactionHandler(ui);
+		if(txn != null) {
+			try {
 				txn.commit();
+			} 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);
 			}
+			sessionManager.disposeTransactionHandler(ui);
 		}
+	}
 
-		/**
-		 * 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 {
+	@Override
+	public void transactionRollback(Object ui) {
+		ITransactionHandler txn = sessionManager.getTransactionHandler(ui);
+		if(txn != null) {
+			try {
 				txn.rollback();
+			} catch (SystemException e) {
+				throw new ExceptionConverter().convertException(e);
+			} catch (IllegalStateException e) {
+				throw new ExceptionConverter().convertException(e);
+			} catch (SecurityException e) {
+				throw new ExceptionConverter().convertException(e);
+			}
+			sessionManager.disposeTransactionHandler(ui);
+		}
+	}
+	
+	@Override
+	public void update(DTO dto, Object ui, LockModeType lockModeType) {
+		ITransactionHandler txn = sessionManager.getTransactionHandler(ui);
+		if(txn != null) {
+			MappingContext entityMappingContext = new MappingContext();
+			entityMappingContext.makeCurrent();
+			entityMappingContext.setEntityManager(txn.getEntityManager());
+			// do not resolve any dto-lazyloading-list during mapping
+			entityMappingContext.setNoCollectionResolving(true);
+			try {
+				ENTITY entity = null;
+				/*
+				 * 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 instanceof Integer) || ((Integer) id).intValue() != 0) {
+					entity = txn.getEntityManager().find(getEntityClass(), id, lockModeType);
+					if (entity == null) {
+						entity = toEntityMapper.createEntity();
+					}
+				} else {
+					entity = toEntityMapper.createEntity();
+				}
+	
+				// map dto to entity and persist
+				toEntityMapper.mapToEntity(dto, entity, (MappingContext) entityMappingContext);
+				entity = txn.getEntityManager().merge(entity);
+	
+				if (entity != null && id instanceof Integer && ((Integer) id).intValue() == 0) {
+					Object newId = new EntityDelegate<ENTITY>(getEntityClass(), txn.getEntityManager(), PROP_MAX_COLLECTION_CONTENT)
+							.getIdentifier(entity);
+					DtoUtils.setIdValue(dto, newId);
+				}
+			} catch (IllegalStateException e) {
+				throw new ExceptionConverter().convertException(e);
+			} catch (SecurityException e) {
+				throw new ExceptionConverter().convertException(e);
+			} finally {
+				entityMappingContext.unmakeCurrent();
 			}
 		}
+	}
+	
+	@Override
+	public void insert(DTO dto, Object ui, LockModeType lockModeType) {
+		ITransactionHandler txn = sessionManager.getTransactionHandler(ui);
+		if(txn != null) {
+			MappingContext entityMappingContext = new MappingContext();
+			entityMappingContext.setEntityManager(txn.getEntityManager());
+			// do not resolve any dto-lazyloading-list during mapping
+			entityMappingContext.setNoCollectionResolving(true);
+			try {
+				ENTITY entity = null;
+				/*
+				 * Map the entity to the dto and persist the entity
+				 */
+				IMapper<DTO, ENTITY> toEntityMapper = findToEntityMapper((Class<DTO>) dto.getClass(),
+						(Class<ENTITY>) getEntityClass());
+				
+				entity = toEntityMapper.createEntity();
+				
+				toEntityMapper.mapToEntity(dto, entity, (MappingContext) entityMappingContext);
+				txn.getEntityManager().persist(entity);
+			} catch (IllegalStateException e) {
+				throw new ExceptionConverter().convertException(e);
+			} catch (SecurityException e) {
+				throw new ExceptionConverter().convertException(e);
+			}
+		}
+	}
+	
+	@Override
+	public void delete(final DTO dto, Object ui, LockModeType lockModeType) throws DtoServiceException {
+		ITransactionHandler txn = sessionManager.getTransactionHandler(ui);
+		if (txn != null) {
+			try {
+				txn.begin();
 
+				ENTITY entity = txn.getEntityManager().find(getEntityClass(), getId(dto), lockModeType);
+				if (entity != null) {
+					txn.getEntityManager().remove(entity);
+				}
+
+				try {
+					txn.commit();
+				} 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);
+			}
+		}
+	}
+
+	protected EntityManager getEntityManager(Object ui) {
+		if(ui != null) {
+			ITransactionHandler txn = sessionManager.getTransactionHandler(ui);
+			if(txn != null) {
+				return txn.getEntityManager();
+			} else {
+				return emf.createEntityManager();
+			}
+		} else {
+			return emf.createEntityManager();
+		}
+	}
+	
+	protected void closeEntityManager(EntityManager em, Object ui) {
+		if(ui == null) {
+			em.close();
+			em = null;
+		}
+	}
+
+	@Override
+	public boolean contains(Object dto, IQuery query) {
+		return contains(dto, query, null, LockModeType.NONE);
+	}
+
+	@Override
+	public boolean contains(IQuery query) {
+		return contains(query, null, LockModeType.NONE);
+	}
+
+	@Override
+	public DTO getNext(DTO dto, IQuery query) {
+		return getNext(dto, query, null, LockModeType.NONE);
+	}
+
+	@Override
+	public DTO getPrevious(DTO dto, IQuery query) {
+		return getPrevious(dto, query, null, LockModeType.NONE);
 	}
 }
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
index 91fa002..605326b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 980922c..f150238 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors: 
  * 		Florian Pirchner - Initial implementation
@@ -28,7 +30,7 @@
 	 * @param e
 	 * @return
 	 */
-	protected DtoServiceException convertException(Exception e) {
+	public DtoServiceException convertException(Exception e) {
 		Throwable cause = e.getCause();
 		if (cause instanceof RuntimeException) {
 			Throwable innercause = cause.getCause();
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/TransactionHandler.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/TransactionHandler.java
new file mode 100644
index 0000000..38b9208
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/TransactionHandler.java
@@ -0,0 +1,201 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011 - 2017 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 2.0        
+ *  which accompanies this distribution, and is available at                  
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
+ *                                                                            
+ *  Initial contribution:                                                      
+ *     Loetz GmbH & Co. KG                              
+ * 
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+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.MappingContext;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherCommand;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherDataTag;
+import org.eclipse.osbp.runtime.common.event.IEventDispatcher;
+import org.eclipse.osbp.runtime.common.session.IMappingContext;
+import org.eclipse.osbp.runtime.common.session.ISessionManager;
+import org.eclipse.osbp.runtime.common.session.ITransactionHandler;
+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;
+import org.eclipse.persistence.sessions.changesets.ObjectChangeSet;
+import org.eclipse.persistence.sessions.changesets.UnitOfWorkChangeSet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TransactionHandler extends SessionEventAdapter implements ITransactionHandler {
+	protected static Logger LOGGER = LoggerFactory.getLogger(TransactionHandler.class);
+	/** The em. */
+	private EntityManager em;
+
+	/** The affected. */
+	private List<Object> affected = new ArrayList<>();
+
+	/** The session manager. */
+	private final ISessionManager sessionManager;
+
+	/** 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 TransactionHandler(EntityManagerFactory emf, ISessionManager sessionManager) {
+		super();
+		this.em = emf.createEntityManager();
+		this.sessionManager = sessionManager;
+		((EntityManagerImpl) em).getActiveSession().getEventManager().addListener(this);
+		isJTA = isJTA(em);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.common.session.ITransactionHandler#getEntityManager()
+	 */
+	@Override
+	public EntityManager getEntityManager() {
+		return em;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.common.session.ITransactionHandler#isJTA(javax.persistence.EntityManager)
+	 */
+	@Override
+	public boolean isJTA(EntityManager em) {
+		try {
+			em.getTransaction();
+		} catch (Exception e) {
+			return true;
+		}
+		return false;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.common.session.ITransactionHandler#begin()
+	 */
+	@Override
+	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();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.common.session.ITransactionHandler#commit()
+	 */
+	@Override
+	public void commit() throws IllegalStateException, SecurityException, HeuristicMixedException, HeuristicRollbackException, RollbackException, SystemException {
+		if (isJTA) {
+			ut.commit();
+		} else {
+			txn.commit();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.common.session.ITransactionHandler#rollback()
+	 */
+	@Override
+	public void rollback() throws IllegalStateException, SecurityException, SystemException {
+		if (isJTA) {
+			ut.rollback();
+		} else {
+			txn.rollback();
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.persistence.sessions.SessionEventAdapter#
+	 * postCommitUnitOfWork (org.eclipse.persistence.sessions.SessionEvent)
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void postCommitUnitOfWork(SessionEvent event) {
+		RepeatableWriteUnitOfWork uow = (RepeatableWriteUnitOfWork) event.getSource();
+		UnitOfWorkChangeSet uowChangeSet = uow.getUnitOfWorkChangeSet();
+		if(uowChangeSet != null) {
+			Map<ObjectChangeSet, ObjectChangeSet> changeSet = uowChangeSet.getAllChangeSets();
+			processChangeSet(changeSet, EventDispatcherCommand.SAVE);
+			// delete
+			Map<ObjectChangeSet, ObjectChangeSet> deletedSet = uowChangeSet.getDeletedObjects();
+			processChangeSet(deletedSet, EventDispatcherCommand.DELETE);
+		}
+	}
+
+	private void processChangeSet(Map<ObjectChangeSet, ObjectChangeSet> changeSet,
+			EventDispatcherCommand eventCmd) {
+		for (ObjectChangeSet object : changeSet.values()) {
+			affected.add(object);
+			// insert or update
+			LOGGER.debug("affected:{} id:{}", object.getClassName(), object.getId());
+			sessionManager.asyncAll(s -> {
+				IEventDispatcher dispatcher = s.get(IEventDispatcher.class);
+				if (dispatcher != null) {
+					EventDispatcherEvent evnt;
+					if (object.isNew()) {
+						evnt = new EventDispatcherEvent(EventDispatcherCommand.REFRESH, object.getClassName(),
+								"DTOService");
+					} else {
+						evnt = new EventDispatcherEvent(eventCmd, object.getClassName(), "DTOService");
+					}
+					evnt.addItem(EventDispatcherDataTag.ID, object.getId());
+					dispatcher.sendEvent(evnt);
+				}
+				return null;
+			});
+		}
+	}
+
+	/**
+	 * 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);
+		em.close();
+		em = null;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/.project b/org.eclipse.osbp.dsl.dto.xtext.edit/.project
index 2c1cc98..7e73ad0 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.edit/.project
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/.project
@@ -20,15 +20,9 @@
 			<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.babel.editor.rbeNature</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
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.edit/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/about.html b/org.eclipse.osbp.dsl.dto.xtext.edit/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.edit/about.html
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/about.properties b/org.eclipse.osbp.dsl.dto.xtext.edit/about.properties
index 8028288..850910f 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.edit/about.properties
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/about.properties
@@ -1,9 +1,11 @@
 # 
 # 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
+#  are made available under the terms of the Eclipse Public License 2.0 
 #  which accompanies this distribution, and is available at
-#  http://www.eclipse.org/legal/epl-v10.html
+#  https://www.eclipse.org/legal/epl-2.0/
+#
+#  SPDX-License-Identifier: EPL-2.0
 # 
 #  Based on ideas from Xtext, Xtend, Xcore
 # 
@@ -21,9 +23,11 @@
 \n\
 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\
+ are made available under the terms of the Eclipse Public License 2.0  \n\
  which accompanies this distribution, and is available at \n\
- http://www.eclipse.org/legal/epl-v10.html \n\
+ https://www.eclipse.org/legal/epl-2.0/ \n\
+ \n\
+ SPDX-License-Identifier: EPL-2.0 \n\
 \n\
  Based on ideas from Xtext, Xtend, Xcore\n\
    \n\
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.properties b/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.properties
index 723fc8b..4fbb2eb 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.properties
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.properties
@@ -1,8 +1,10 @@
 # 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 
+#  are made available under the terms of the Eclipse Public License 2.0  
 #  which accompanies this distribution, and is available at 
-#  http://www.eclipse.org/legal/epl-v10.html 
+#  https://www.eclipse.org/legal/epl-2.0/ 
+# 
+#  SPDX-License-Identifier: EPL-2.0 
 # 
 #  Based on ideas from Xtext, Xtend, Xcore
 #    
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.xml b/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.xml
index 24fc9d5..91e08e3 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.xml
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.xml
@@ -4,9 +4,11 @@
 <!--
  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 
+  are made available under the terms of the Eclipse Public License 2.0  
   which accompanies this distribution, and is available at 
-  http://www.eclipse.org/legal/epl-v10.html 
+  https://www.eclipse.org/legal/epl-2.0/ 
+ 
+  SPDX-License-Identifier: EPL-2.0 
  
   Based on ideas from Xtext, Xtend, Xcore
     
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/pom.xml b/org.eclipse.osbp.dsl.dto.xtext.edit/pom.xml
index 75659bf..5daf658 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.edit/pom.xml
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index 8517e86..7fd883a 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 998300b..a595133 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 9e8e1d7..b096045 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
@@ -72,6 +74,8 @@
 			addRangeFilteringPropertyDescriptor(object);
 			addUniqueEntryPropertyDescriptor(object);
 			addTypePropertyDescriptor(object);
+			addIsGroupedPropertyDescriptor(object);
+			addGroupNamePropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
@@ -385,6 +389,50 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Is Grouped feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIsGroupedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_isGrouped_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_isGrouped_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__IS_GROUPED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Group Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addGroupNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_groupName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_groupName_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__GROUP_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}.
@@ -456,6 +504,8 @@
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__FILTERING:
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__RANGE_FILTERING:
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__UNIQUE_ENTRY:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
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
index f8b61a8..8636ccb 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
@@ -58,6 +60,10 @@
 
 			addLazyPropertyDescriptor(object);
 			addCascadingPropertyDescriptor(object);
+			addIsGroupedPropertyDescriptor(object);
+			addGroupNamePropertyDescriptor(object);
+			addAsGridPropertyDescriptor(object);
+			addAsTablePropertyDescriptor(object);
 			addTypePropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
@@ -108,6 +114,94 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Is Grouped feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIsGroupedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_isGrouped_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_isGrouped_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__IS_GROUPED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Group Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addGroupNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_groupName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_groupName_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__GROUP_NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the As Grid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAsGridPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_asGrid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_asGrid_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__AS_GRID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the As Table feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAsTablePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_asTable_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_asTable_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__AS_TABLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the Type feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -189,6 +283,10 @@
 		switch (notification.getFeatureID(LDtoAbstractReference.class)) {
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__LAZY:
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CASCADING:
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__IS_GROUPED:
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__GROUP_NAME:
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_GRID:
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_TABLE:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__PROPERTIES:
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
index aca85dd..040d9ae 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 2736bdb..cd96161 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index a927d8a..deddc8d 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 3292546..95509e8 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index ca3e830..c14c5d8 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 0a0a31f..d4c7c80 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index acabb4f..877c8c2 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 72564f5..52d860b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index ca45c44..57a4d3c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 7acf76f..5886d35 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/LICENSE.txt b/org.eclipse.osbp.dsl.dto.xtext.ide/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/about.html b/org.eclipse.osbp.dsl.dto.xtext.ide/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/about.html
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/about.properties b/org.eclipse.osbp.dsl.dto.xtext.ide/about.properties
index 2b2129a..c03d7d1 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/about.properties
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying material
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributor
 #  Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 \n\
 Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\n\
 All rights reserved. This program and the accompanying material\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available \n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributor\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/build.properties b/org.eclipse.osbp.dsl.dto.xtext.ide/build.properties
index 7fbaa04..2cb9a1c 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/build.properties
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/build.properties
@@ -11,7 +11,7 @@
                about.html,\
                LICENSE.txt,\
                META-INF/,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html
 source.. = src-gen/,\
            src/
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/epl-2.0.html b/org.eclipse.osbp.dsl.dto.xtext.ide/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/epl-v10.html b/org.eclipse.osbp.dsl.dto.xtext.ide/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/license.html b/org.eclipse.osbp.dsl.dto.xtext.ide/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/license.html
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/pom.xml b/org.eclipse.osbp.dsl.dto.xtext.ide/pom.xml
index bc12ab7..2d04dc3 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/pom.xml
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/pom.xml
@@ -2,9 +2,11 @@
 <!--#======================================================================= -->
 <!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
 <!--# All rights reserved. This program and the accompanying materials -->
-<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/AbstractDtoGrammarIdeModule.java b/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/AbstractDtoGrammarIdeModule.java
index 0cf9270..8883e94 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/AbstractDtoGrammarIdeModule.java
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/AbstractDtoGrammarIdeModule.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/DtoGrammarParser.java b/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/DtoGrammarParser.java
index 53812ad..3989d9b 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/DtoGrammarParser.java
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/DtoGrammarParser.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/PartialDtoGrammarContentAssistParser.java b/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/PartialDtoGrammarContentAssistParser.java
index 4b9ccad..959e2de 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/PartialDtoGrammarContentAssistParser.java
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/PartialDtoGrammarContentAssistParser.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/internal/InternalDtoGrammarLexer.java b/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/internal/InternalDtoGrammarLexer.java
index 0408ece..41be2b9 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/internal/InternalDtoGrammarLexer.java
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/internal/InternalDtoGrammarLexer.java
@@ -1,3 +1,18 @@
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
+ * generated by Xtext 2.11.0
+
+ */
 package org.eclipse.osbp.dsl.dto.xtext.ide.contentassist.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/internal/InternalDtoGrammarParser.java b/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/internal/InternalDtoGrammarParser.java
index 2c05bcd..0a71b7c 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/internal/InternalDtoGrammarParser.java
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/src-gen/org/eclipse/osbp/dsl/dto/xtext/ide/contentassist/antlr/internal/InternalDtoGrammarParser.java
@@ -23,9 +23,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/src/org/eclipse/osbp/dsl/dto/xtext/ide/DtoGrammarIdeModule.java b/org.eclipse.osbp.dsl.dto.xtext.ide/src/org/eclipse/osbp/dsl/dto/xtext/ide/DtoGrammarIdeModule.java
index dbd1576..2546ab7 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/src/org/eclipse/osbp/dsl/dto/xtext/ide/DtoGrammarIdeModule.java
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/src/org/eclipse/osbp/dsl/dto/xtext/ide/DtoGrammarIdeModule.java
@@ -1,5 +1,17 @@
-/*
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
  * generated by Xtext 2.11.0
+
  */
 package org.eclipse.osbp.dsl.dto.xtext.ide;
 
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ide/src/org/eclipse/osbp/dsl/dto/xtext/ide/DtoGrammarIdeSetup.java b/org.eclipse.osbp.dsl.dto.xtext.ide/src/org/eclipse/osbp/dsl/dto/xtext/ide/DtoGrammarIdeSetup.java
index 67b72c6..7573978 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ide/src/org/eclipse/osbp/dsl/dto/xtext/ide/DtoGrammarIdeSetup.java
+++ b/org.eclipse.osbp.dsl.dto.xtext.ide/src/org/eclipse/osbp/dsl/dto/xtext/ide/DtoGrammarIdeSetup.java
@@ -1,5 +1,17 @@
-/*
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
  * generated by Xtext 2.11.0
+
  */
 package org.eclipse.osbp.dsl.dto.xtext.ide;
 
diff --git a/org.eclipse.osbp.dsl.dto.xtext.tests/pom.xml b/org.eclipse.osbp.dsl.dto.xtext.tests/pom.xml
index 0238a88..1cbe54b 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.tests/pom.xml
+++ b/org.eclipse.osbp.dsl.dto.xtext.tests/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
diff --git a/org.eclipse.osbp.dsl.dto.xtext.tests/src-gen/org/eclipse/osbp/dsl/dto/xtext/tests/DtoGrammarInjectorProvider.java b/org.eclipse.osbp.dsl.dto.xtext.tests/src-gen/org/eclipse/osbp/dsl/dto/xtext/tests/DtoGrammarInjectorProvider.java
index 982c1af..b189fbd 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.tests/src-gen/org/eclipse/osbp/dsl/dto/xtext/tests/DtoGrammarInjectorProvider.java
+++ b/org.eclipse.osbp.dsl.dto.xtext.tests/src-gen/org/eclipse/osbp/dsl/dto/xtext/tests/DtoGrammarInjectorProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/LICENSE.txt b/org.eclipse.osbp.dsl.dto.xtext.ui/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ui/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/about.html b/org.eclipse.osbp.dsl.dto.xtext.ui/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ui/about.html
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/about.properties b/org.eclipse.osbp.dsl.dto.xtext.ui/about.properties
index adbc1e3..36cb9c0 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ui/about.properties
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 #  Florian Pirchner - Initial implementation
@@ -23,9 +25,11 @@
 \n\
 Copyright (c) 2011, 2015 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/build.properties b/org.eclipse.osbp.dsl.dto.xtext.ui/build.properties
index 3a963fd..883db66 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ui/build.properties
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/build.properties
@@ -8,7 +8,7 @@
                .,\
                plugin.xml,\
                icons/,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                LICENSE.txt
 jre.compilation.profile = JavaSE-1.8
@@ -17,6 +17,6 @@
                about.ini,\
                about.mappings,\
                about.properties,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                LICENSE.txt
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/epl-2.0.html b/org.eclipse.osbp.dsl.dto.xtext.ui/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/epl-v10.html b/org.eclipse.osbp.dsl.dto.xtext.ui/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.dto.xtext.ui/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/license.html b/org.eclipse.osbp.dsl.dto.xtext.ui/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ui/license.html
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/pom.xml b/org.eclipse.osbp.dsl.dto.xtext.ui/pom.xml
index 3ddc62c..c215c45 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ui/pom.xml
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index 473f7b5..93f42d8 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index e83baf4..c036e59 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 1dc6ff5..139e17d 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/internal/XtextActivator.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/internal/XtextActivator.java
index a085d80..6b61451 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/internal/XtextActivator.java
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/internal/XtextActivator.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/quickfix/DtoGrammarQuickfixProvider.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/quickfix/DtoGrammarQuickfixProvider.java
index 9ec8de8..06aab85 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/quickfix/DtoGrammarQuickfixProvider.java
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/quickfix/DtoGrammarQuickfixProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 75a79da..32db63f 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 635062e..f3fb43d 100644
--- 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
@@ -3,9 +3,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index c80cd91..3ce695c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index d7ff7f4..abd4127 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index f74212a..3bc0e1f 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 90c6fb6..7dac2e9 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index a416726..73805c0 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index eb11174..67d80df 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/LICENSE.txt b/org.eclipse.osbp.dsl.dto.xtext/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.dto.xtext/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.dto.xtext/about.html b/org.eclipse.osbp.dsl.dto.xtext/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/about.html
+++ b/org.eclipse.osbp.dsl.dto.xtext/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/about.properties b/org.eclipse.osbp.dsl.dto.xtext/about.properties
index e56ff4d..9fbdcfc 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/about.properties
+++ b/org.eclipse.osbp.dsl.dto.xtext/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 #  Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 \n\
 Copyright (c) 2011, 2015 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.dto.xtext/build.properties b/org.eclipse.osbp.dsl.dto.xtext/build.properties
index f41b114..1390807 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/build.properties
+++ b/org.eclipse.osbp.dsl.dto.xtext/build.properties
@@ -8,7 +8,7 @@
                about.html,\
                META-INF/,\
                .,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                plugin.xml,\
                plugin.properties,\
@@ -20,5 +20,5 @@
                about.ini,\
                about.mappings,\
                about.properties,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LAutoInheritDto.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LAutoInheritDto.java
index ffe6d56..5889767 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LAutoInheritDto.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LAutoInheritDto.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDto.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDto.java
index ddd1b98..87678e1 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDto.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDto.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractAttribute.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractAttribute.java
index a764059..253f864 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractAttribute.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractAttribute.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractReference.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractReference.java
index d8455ac..1565f46 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractReference.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractReference.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAttribute.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAttribute.java
index 5033ea6..10d2f5c 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAttribute.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAttribute.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoFeature.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoFeature.java
index 40ceddc..f24e239 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoFeature.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoFeature.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedAttribute.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedAttribute.java
index 950ded6..4478845 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedAttribute.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedAttribute.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedReference.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedReference.java
index 5cd5253..620380c 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedReference.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedReference.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoMapper.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoMapper.java
index be51362..b48d1f0 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoMapper.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoMapper.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoModel.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoModel.java
index c10e2b6..a4b0ce7 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoModel.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoModel.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoOperation.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoOperation.java
index 8cc4ad3..bdced30 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoOperation.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoOperation.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoReference.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoReference.java
index b0466ac..f8ac0a9 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoReference.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoReference.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoFactory.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoFactory.java
index 63f2f36..9de7d26 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoFactory.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoFactory.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoPackage.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoPackage.java
index f5135cd..ba9f4ba 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoPackage.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoPackage.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
@@ -630,13 +632,31 @@
 	int LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS = LDTO_FEATURE_FEATURE_COUNT + 16;
 
 	/**
+	 * The feature id for the '<em><b>Is Grouped</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED = LDTO_FEATURE_FEATURE_COUNT + 17;
+
+	/**
+	 * The feature id for the '<em><b>Group Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME = LDTO_FEATURE_FEATURE_COUNT + 18;
+
+	/**
 	 * 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 + 17;
+	int LDTO_ABSTRACT_ATTRIBUTE_FEATURE_COUNT = LDTO_FEATURE_FEATURE_COUNT + 19;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedAttributeImpl <em>LDto Inherited Attribute</em>}' class.
@@ -847,6 +867,24 @@
 	int LDTO_INHERITED_ATTRIBUTE__CONSTRAINTS = LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS;
 
 	/**
+	 * The feature id for the '<em><b>Is Grouped</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__IS_GROUPED = LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED;
+
+	/**
+	 * The feature id for the '<em><b>Group Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__GROUP_NAME = LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME;
+
+	/**
 	 * The feature id for the '<em><b>Inherited Feature</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1073,6 +1111,24 @@
 	int LDTO_ATTRIBUTE__CONSTRAINTS = LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS;
 
 	/**
+	 * The feature id for the '<em><b>Is Grouped</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__IS_GROUPED = LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED;
+
+	/**
+	 * The feature id for the '<em><b>Group Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__GROUP_NAME = LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME;
+
+	/**
 	 * The number of structural features of the '<em>LDto Attribute</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1173,13 +1229,49 @@
 	int LDTO_ABSTRACT_REFERENCE__CONSTRAINTS = LDTO_FEATURE_FEATURE_COUNT + 3;
 
 	/**
+	 * The feature id for the '<em><b>Is Grouped</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__IS_GROUPED = LDTO_FEATURE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Group Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__GROUP_NAME = LDTO_FEATURE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>As Grid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__AS_GRID = LDTO_FEATURE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>As Table</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__AS_TABLE = LDTO_FEATURE_FEATURE_COUNT + 7;
+
+	/**
 	 * 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;
+	int LDTO_ABSTRACT_REFERENCE__TYPE = LDTO_FEATURE_FEATURE_COUNT + 8;
 
 	/**
 	 * The number of structural features of the '<em>LDto Abstract Reference</em>' class.
@@ -1188,7 +1280,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LDTO_ABSTRACT_REFERENCE_FEATURE_COUNT = LDTO_FEATURE_FEATURE_COUNT + 5;
+	int LDTO_ABSTRACT_REFERENCE_FEATURE_COUNT = LDTO_FEATURE_FEATURE_COUNT + 9;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedReferenceImpl <em>LDto Inherited Reference</em>}' class.
@@ -1282,6 +1374,42 @@
 	int LDTO_INHERITED_REFERENCE__CONSTRAINTS = LDTO_ABSTRACT_REFERENCE__CONSTRAINTS;
 
 	/**
+	 * The feature id for the '<em><b>Is Grouped</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__IS_GROUPED = LDTO_ABSTRACT_REFERENCE__IS_GROUPED;
+
+	/**
+	 * The feature id for the '<em><b>Group Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__GROUP_NAME = LDTO_ABSTRACT_REFERENCE__GROUP_NAME;
+
+	/**
+	 * The feature id for the '<em><b>As Grid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__AS_GRID = LDTO_ABSTRACT_REFERENCE__AS_GRID;
+
+	/**
+	 * The feature id for the '<em><b>As Table</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__AS_TABLE = LDTO_ABSTRACT_REFERENCE__AS_TABLE;
+
+	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1400,6 +1528,42 @@
 	int LDTO_REFERENCE__CONSTRAINTS = LDTO_ABSTRACT_REFERENCE__CONSTRAINTS;
 
 	/**
+	 * The feature id for the '<em><b>Is Grouped</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__IS_GROUPED = LDTO_ABSTRACT_REFERENCE__IS_GROUPED;
+
+	/**
+	 * The feature id for the '<em><b>Group Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__GROUP_NAME = LDTO_ABSTRACT_REFERENCE__GROUP_NAME;
+
+	/**
+	 * The feature id for the '<em><b>As Grid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__AS_GRID = LDTO_ABSTRACT_REFERENCE__AS_GRID;
+
+	/**
+	 * The feature id for the '<em><b>As Table</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__AS_TABLE = LDTO_ABSTRACT_REFERENCE__AS_TABLE;
+
+	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LAutoInheritDtoImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LAutoInheritDtoImpl.java
index 30466f6..3f741d4 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LAutoInheritDtoImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LAutoInheritDtoImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractAttributeImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractAttributeImpl.java
index 1e21061..33d5562 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractAttributeImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractAttributeImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
@@ -66,6 +68,8 @@
  *   <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#getProperties <em>Properties</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#getConstraints <em>Constraints</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isIsGrouped <em>Is Grouped</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#getGroupName <em>Group Name</em>}</li>
  * </ul>
  *
  * @generated
@@ -372,6 +376,46 @@
 	protected EList<LDatatypeConstraint> constraints;
 
 	/**
+	 * The default value of the '{@link #isIsGrouped() <em>Is Grouped</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isIsGrouped()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean IS_GROUPED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isIsGrouped() <em>Is Grouped</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isIsGrouped()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean isGrouped = IS_GROUPED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getGroupName() <em>Group Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroupName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String GROUP_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getGroupName() <em>Group Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroupName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String groupName = GROUP_NAME_EDEFAULT;
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -773,6 +817,48 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public boolean isIsGrouped() {
+		return isGrouped;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIsGrouped(boolean newIsGrouped) {
+		boolean oldIsGrouped = isGrouped;
+		isGrouped = newIsGrouped;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED, oldIsGrouped, isGrouped));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getGroupName() {
+		return groupName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setGroupName(String newGroupName) {
+		String oldGroupName = groupName;
+		groupName = newGroupName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME, oldGroupName, groupName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public List<LKeyAndValue> getResolvedProperties() {
 		if ((this instanceof LDtoInheritedAttribute)) {
 			final LDtoInheritedAttribute temp = ((LDtoInheritedAttribute) this);
@@ -867,6 +953,10 @@
 				return getProperties();
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS:
 				return getConstraints();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED:
+				return isIsGrouped();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME:
+				return getGroupName();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -933,6 +1023,12 @@
 				getConstraints().clear();
 				getConstraints().addAll((Collection<? extends LDatatypeConstraint>)newValue);
 				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED:
+				setIsGrouped((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME:
+				setGroupName((String)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -996,6 +1092,12 @@
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS:
 				getConstraints().clear();
 				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED:
+				setIsGrouped(IS_GROUPED_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME:
+				setGroupName(GROUP_NAME_EDEFAULT);
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -1042,6 +1144,10 @@
 				return properties != null && !properties.isEmpty();
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS:
 				return constraints != null && !constraints.isEmpty();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED:
+				return isGrouped != IS_GROUPED_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME:
+				return GROUP_NAME_EDEFAULT == null ? groupName != null : !GROUP_NAME_EDEFAULT.equals(groupName);
 		}
 		return super.eIsSet(featureID);
 	}
@@ -1072,6 +1178,8 @@
 				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE: return OSBPTypesPackage.LATTRIBUTE__TYPE;
 				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES: return OSBPTypesPackage.LATTRIBUTE__PROPERTIES;
 				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS: return OSBPTypesPackage.LATTRIBUTE__CONSTRAINTS;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED: return OSBPTypesPackage.LATTRIBUTE__IS_GROUPED;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME: return OSBPTypesPackage.LATTRIBUTE__GROUP_NAME;
 				default: return -1;
 			}
 		}
@@ -1104,6 +1212,8 @@
 				case OSBPTypesPackage.LATTRIBUTE__TYPE: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE;
 				case OSBPTypesPackage.LATTRIBUTE__PROPERTIES: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES;
 				case OSBPTypesPackage.LATTRIBUTE__CONSTRAINTS: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS;
+				case OSBPTypesPackage.LATTRIBUTE__IS_GROUPED: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED;
+				case OSBPTypesPackage.LATTRIBUTE__GROUP_NAME: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME;
 				default: return -1;
 			}
 		}
@@ -1146,6 +1256,10 @@
 		result.append(rangeFiltering);
 		result.append(", uniqueEntry: ");
 		result.append(uniqueEntry);
+		result.append(", isGrouped: ");
+		result.append(isGrouped);
+		result.append(", groupName: ");
+		result.append(groupName);
 		result.append(')');
 		return result.toString();
 	}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractReferenceImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractReferenceImpl.java
index 3bbf9d7..ca98f85 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractReferenceImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractReferenceImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
@@ -51,6 +53,10 @@
  *   <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#isIsGrouped <em>Is Grouped</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#getGroupName <em>Group Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#isAsGrid <em>As Grid</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#isAsTable <em>As Table</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#getType <em>Type</em>}</li>
  * </ul>
  *
@@ -118,6 +124,86 @@
 	protected EList<LDatatypeConstraint> constraints;
 
 	/**
+	 * The default value of the '{@link #isIsGrouped() <em>Is Grouped</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isIsGrouped()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean IS_GROUPED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isIsGrouped() <em>Is Grouped</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isIsGrouped()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean isGrouped = IS_GROUPED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getGroupName() <em>Group Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroupName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String GROUP_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getGroupName() <em>Group Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroupName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String groupName = GROUP_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isAsGrid() <em>As Grid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAsGrid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean AS_GRID_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAsGrid() <em>As Grid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAsGrid()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean asGrid = AS_GRID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isAsTable() <em>As Table</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAsTable()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean AS_TABLE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAsTable() <em>As Table</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAsTable()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean asTable = AS_TABLE_EDEFAULT;
+
+	/**
 	 * The cached value of the '{@link #getType() <em>Type</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -217,6 +303,90 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public boolean isIsGrouped() {
+		return isGrouped;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIsGrouped(boolean newIsGrouped) {
+		boolean oldIsGrouped = isGrouped;
+		isGrouped = newIsGrouped;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__IS_GROUPED, oldIsGrouped, isGrouped));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getGroupName() {
+		return groupName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setGroupName(String newGroupName) {
+		String oldGroupName = groupName;
+		groupName = newGroupName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__GROUP_NAME, oldGroupName, groupName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isAsGrid() {
+		return asGrid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAsGrid(boolean newAsGrid) {
+		boolean oldAsGrid = asGrid;
+		asGrid = newAsGrid;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_GRID, oldAsGrid, asGrid));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isAsTable() {
+		return asTable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAsTable(boolean newAsTable) {
+		boolean oldAsTable = asTable;
+		asTable = newAsTable;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_TABLE, oldAsTable, asTable));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public LDto getType() {
 		if (type != null && type.eIsProxy()) {
 			InternalEObject oldType = (InternalEObject)type;
@@ -305,6 +475,14 @@
 				return getProperties();
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CONSTRAINTS:
 				return getConstraints();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__IS_GROUPED:
+				return isIsGrouped();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__GROUP_NAME:
+				return getGroupName();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_GRID:
+				return isAsGrid();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_TABLE:
+				return isAsTable();
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE:
 				if (resolve) return getType();
 				return basicGetType();
@@ -335,6 +513,18 @@
 				getConstraints().clear();
 				getConstraints().addAll((Collection<? extends LDatatypeConstraint>)newValue);
 				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__IS_GROUPED:
+				setIsGrouped((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__GROUP_NAME:
+				setGroupName((String)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_GRID:
+				setAsGrid((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_TABLE:
+				setAsTable((Boolean)newValue);
+				return;
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE:
 				setType((LDto)newValue);
 				return;
@@ -362,6 +552,18 @@
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CONSTRAINTS:
 				getConstraints().clear();
 				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__IS_GROUPED:
+				setIsGrouped(IS_GROUPED_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__GROUP_NAME:
+				setGroupName(GROUP_NAME_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_GRID:
+				setAsGrid(AS_GRID_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_TABLE:
+				setAsTable(AS_TABLE_EDEFAULT);
+				return;
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE:
 				setType((LDto)null);
 				return;
@@ -385,6 +587,14 @@
 				return properties != null && !properties.isEmpty();
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CONSTRAINTS:
 				return constraints != null && !constraints.isEmpty();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__IS_GROUPED:
+				return isGrouped != IS_GROUPED_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__GROUP_NAME:
+				return GROUP_NAME_EDEFAULT == null ? groupName != null : !GROUP_NAME_EDEFAULT.equals(groupName);
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_GRID:
+				return asGrid != AS_GRID_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_TABLE:
+				return asTable != AS_TABLE_EDEFAULT;
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE:
 				return type != null;
 		}
@@ -404,6 +614,10 @@
 				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;
+				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__IS_GROUPED: return OSBPTypesPackage.LREFERENCE__IS_GROUPED;
+				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__GROUP_NAME: return OSBPTypesPackage.LREFERENCE__GROUP_NAME;
+				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_GRID: return OSBPTypesPackage.LREFERENCE__AS_GRID;
+				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_TABLE: return OSBPTypesPackage.LREFERENCE__AS_TABLE;
 				default: return -1;
 			}
 		}
@@ -423,6 +637,10 @@
 				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;
+				case OSBPTypesPackage.LREFERENCE__IS_GROUPED: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__IS_GROUPED;
+				case OSBPTypesPackage.LREFERENCE__GROUP_NAME: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__GROUP_NAME;
+				case OSBPTypesPackage.LREFERENCE__AS_GRID: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_GRID;
+				case OSBPTypesPackage.LREFERENCE__AS_TABLE: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_TABLE;
 				default: return -1;
 			}
 		}
@@ -443,6 +661,14 @@
 		result.append(lazy);
 		result.append(", cascading: ");
 		result.append(cascading);
+		result.append(", isGrouped: ");
+		result.append(isGrouped);
+		result.append(", groupName: ");
+		result.append(groupName);
+		result.append(", asGrid: ");
+		result.append(asGrid);
+		result.append(", asTable: ");
+		result.append(asTable);
 		result.append(')');
 		return result.toString();
 	}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAttributeImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAttributeImpl.java
index 4d54352..345de49 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAttributeImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAttributeImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoFeatureImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoFeatureImpl.java
index de05c1a..0dccf9f 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoFeatureImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoFeatureImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImpl.java
index 52ed7a7..f10028a 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedAttributeImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedAttributeImpl.java
index 4fb50f6..294738d 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedAttributeImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedAttributeImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedReferenceImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedReferenceImpl.java
index 0afcecb..45aad65 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedReferenceImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedReferenceImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoMapperImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoMapperImpl.java
index 9ba9b8e..72dc88a 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoMapperImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoMapperImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoModelImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoModelImpl.java
index 2da9a52..7958b25 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoModelImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoModelImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoOperationImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoOperationImpl.java
index 01cdec8..f927a86 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoOperationImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoOperationImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoReferenceImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoReferenceImpl.java
index 2223228..6e10fb5 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoReferenceImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoReferenceImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoFactoryImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoFactoryImpl.java
index 5a1203e..25417d5 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoFactoryImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoFactoryImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoPackageImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoPackageImpl.java
index 9e139ed..7bac633 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoPackageImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoPackageImpl.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoAdapterFactory.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoAdapterFactory.java
index d7f3430..e15aa52 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoAdapterFactory.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoAdapterFactory.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoSwitch.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoSwitch.java
index 81e5b17..5035f53 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoSwitch.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoSwitch.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Contributors:  
  *  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/epl-2.0.html b/org.eclipse.osbp.dsl.dto.xtext/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext/epl-v10.html b/org.eclipse.osbp.dsl.dto.xtext/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.dto.xtext/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext/license.html b/org.eclipse.osbp.dsl.dto.xtext/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/license.html
+++ b/org.eclipse.osbp.dsl.dto.xtext/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore b/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore
index 76aed54..49903db 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore
+++ b/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore
@@ -5,9 +5,11 @@
 @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 
+ are made available under the terms of the Eclipse Public License 2.0  
  which accompanies this distribution, and is available at 
- http://www.eclipse.org/legal/epl-v10.html 
+ https://www.eclipse.org/legal/epl-2.0/ 
+ 
+ SPDX-License-Identifier: EPL-2.0 
 
  Contributors:  
  		Florian Pirchner - Initial implementation 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/plugin.properties b/org.eclipse.osbp.dsl.dto.xtext/plugin.properties
index 801bae7..3f8bc23 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/plugin.properties
+++ b/org.eclipse.osbp.dsl.dto.xtext/plugin.properties
@@ -1,8 +1,10 @@
 # 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 
+#  are made available under the terms of the Eclipse Public License 2.0  
 #  which accompanies this distribution, and is available at 
-#  http://www.eclipse.org/legal/epl-v10.html 
+#  https://www.eclipse.org/legal/epl-2.0/ 
+# 
+#  SPDX-License-Identifier: EPL-2.0 
 # 
 #  Based on ideas from Xtext, Xtend, Xcore
 #    
diff --git a/org.eclipse.osbp.dsl.dto.xtext/plugin.xml b/org.eclipse.osbp.dsl.dto.xtext/plugin.xml
index 2a7ea3c..36af69e 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/plugin.xml
+++ b/org.eclipse.osbp.dsl.dto.xtext/plugin.xml
@@ -4,9 +4,11 @@
 <!--
  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
+ are made available under the terms of the Eclipse Public License 2.0 
  which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v10.html
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
  
  Sources generated by Xtext  
  
diff --git a/org.eclipse.osbp.dsl.dto.xtext/pom.xml b/org.eclipse.osbp.dsl.dto.xtext/pom.xml
index ead059f..27ba58c 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/pom.xml
+++ b/org.eclipse.osbp.dsl.dto.xtext/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index 8ebcf36..8ab5dac 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 367c594..8fbba8b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 63d633d..933f4ba 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index cd049d6..ade5b0b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index ed9ba26..83ac26f 100644
--- 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
@@ -23,9 +23,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/scoping/AbstractDtoGrammarScopeProvider.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/scoping/AbstractDtoGrammarScopeProvider.java
index c6ee206..b62615c 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/scoping/AbstractDtoGrammarScopeProvider.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/scoping/AbstractDtoGrammarScopeProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSemanticSequencer.java
index 7f9e3f2..c428b35 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSemanticSequencer.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSemanticSequencer.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSyntacticSequencer.java
index 4733e50..954dd5c 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSyntacticSequencer.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSyntacticSequencer.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 83c4b3f..9435bc2 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/validation/AbstractDtoGrammarValidator.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/validation/AbstractDtoGrammarValidator.java
index 0543109..d8756f5 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/validation/AbstractDtoGrammarValidator.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/validation/AbstractDtoGrammarValidator.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 0383ebc..2520e88 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index bb1fc2d..2e66b2c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 800bf5b..8c18730 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index c559710..89cc7f6 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 94d9f6d..0dc6a95 100644
--- 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
@@ -2,9 +2,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 630c30e..6d6ca43 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 var fileHeaderText = "/**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/MavenGenerateDtoGrammar.mwe2 b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/MavenGenerateDtoGrammar.mwe2
new file mode 100644
index 0000000..2106dea
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/MavenGenerateDtoGrammar.mwe2
@@ -0,0 +1,187 @@
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * 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 fileHeaderText = "/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
+ * generated by Xtext \${version}\n
+ */
+"
+var fileExtensions = "dtos"
+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.OSBPEntityFactoryImpl"
+		}
+		
+		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 {
+		resourceSet = org.eclipse.xtext.resource.XtextResourceSet : theResourceSet {}
+
+		// add mappings from platform:/resource to classpath:/
+		uriMap = {
+			from = "platform:/resource/org.eclipse.xtext.xbase/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.xtext.xbase.lib/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.xtext.common.types/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.emf.ecore.xcore/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.emf.ecore.xcore.lib/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.osbp.dsl.semantic.common/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.osbp.dsl.semantic.entity/"
+			to = "classpath:/"
+		}
+		uriMap = {
+			from = "platform:/resource/org.eclipse.osbp.dsl.semantic.dto/"
+			to = "classpath:/"
+		}
+		
+
+		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"
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore"
+		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage"
+	}
+
+	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"
+			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 = auto-inject {}
+			}
+			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 = auto-inject {}
+			}
+			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
index d26b04e..fedf31b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index c8f63a7..9e1b3dc 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index fc6038a..bcc2ad0 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors: 
  * 		Florian Pirchner - Initial implementation
@@ -499,9 +501,9 @@
 		«IF opposite != null»
 			«paramName».«prop.opposite.toSetterName»(this);
 		«ELSE»
-			if(!«prop.toCollectionInternalGetterName»().contains(«paramName»)){
+«««			if(!«prop.toCollectionInternalGetterName»().contains(«paramName»)){
 				«prop.toCollectionInternalAdderName»(«paramName»);
-			}
+«««			}
 		«ENDIF»
 		'''
 
@@ -528,11 +530,11 @@
 				if(it == null) return
 				val p = it.trace(prop);
 				p += prop.toCheckDisposedCall()
-				p >> "if (!" + prop.toGetterName + "().contains(" + paramName + "))" >>> "{"
-				{
+//				p >> "if (!" + prop.toGetterName + "().contains(" + paramName + "))" >>> "{"
+//				{
 					p >> prop.toGetterName + "().add(" + paramName + ");"
-				}
-				p <<< "}"
+//				}
+//				p <<< "}"
 			])
 		return associate(prop, op);
 	}
@@ -669,16 +671,17 @@
 			«paramName».addPropertyChangeListener(this);
 			«ENDIF»
 			
-			if(!«prop.toCollectionInternalGetterName»().contains(«paramName»)) {
-				if(!org.eclipse.osbp.dsl.dto.lib.MappingContext.isMappingMode()) {
-					// collections will become resolved! We need to send a delta notification.
-					List<«prop.toTypeName»> oldList = new java.util.ArrayList<>(«prop.toCollectionInternalGetterName»());
+			if(!org.eclipse.osbp.dsl.dto.lib.MappingContext.isMappingMode()) {
+«««				if(!«prop.toCollectionInternalGetterName»().contains(«paramName»)) {
+					List<«prop.toTypeName»> oldList = null;
+					if(«prop.toCollectionInternalGetterName»() instanceof org.eclipse.osbp.dsl.dto.lib.AbstractOppositeDtoList) {
+						oldList = ((org.eclipse.osbp.dsl.dto.lib.AbstractOppositeDtoList) «prop.toCollectionInternalGetterName»()).copy();
+					} else {
+						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);
@@ -704,7 +707,13 @@
 			// add this as property change listener for embeddable beans
 			«paramName».addPropertyChangeListener(this);
 			«ENDIF»
-			List<«prop.toTypeName»> oldList = new java.util.ArrayList<>(«prop.toCollectionInternalGetterName»());
+			
+			List<«prop.toTypeName»> oldList = null;
+			if(«prop.toCollectionInternalGetterName»() instanceof org.eclipse.osbp.dsl.dto.lib.AbstractOppositeDtoList) {
+				oldList = ((org.eclipse.osbp.dsl.dto.lib.AbstractOppositeDtoList) «prop.toCollectionInternalGetterName»()).copy();
+			} else {
+				oldList = new java.util.ArrayList<>(«prop.toCollectionInternalGetterName»());
+			}
 			«prop.toCollectionInternalGetterName»().add(«paramName»);
 			firePropertyChange("«prop.toName»", oldList, «prop.toCollectionInternalGetterName»());
 		'''
@@ -734,8 +743,12 @@
 			«paramName».removePropertyChangeListener(this);
 			«ENDIF»
 			if(!org.eclipse.osbp.dsl.dto.lib.MappingContext.isMappingMode()) {
-				// collections will become resolved! We need to send a delta notification.
-				List<«prop.toTypeName»> oldList = new java.util.ArrayList<>(«prop.toCollectionInternalGetterName»());
+				List<«prop.toTypeName»> oldList = null;
+				if(«prop.toCollectionInternalGetterName»() instanceof org.eclipse.osbp.dsl.dto.lib.AbstractOppositeDtoList) {
+					oldList = ((org.eclipse.osbp.dsl.dto.lib.AbstractOppositeDtoList) «prop.toCollectionInternalGetterName»()).copy();
+				} else {
+					oldList = new java.util.ArrayList<>(«prop.toCollectionInternalGetterName»());
+				}
 				«prop.toCollectionInternalGetterName»().remove(«paramName»);
 				firePropertyChange("«prop.toName»", oldList, «prop.toCollectionInternalGetterName»());	
 			}else{
@@ -768,7 +781,12 @@
 			// remove this as property change listener from the embeddable bean
 			«paramName».removePropertyChangeListener(this);
 			«ENDIF»
-			List<«prop.toTypeName»> oldList = new java.util.ArrayList<>(«prop.toCollectionInternalGetterName»());
+			List<«prop.toTypeName»> oldList = null;
+			if(«prop.toCollectionInternalGetterName»() instanceof org.eclipse.osbp.dsl.dto.lib.AbstractOppositeDtoList) {
+				oldList = ((org.eclipse.osbp.dsl.dto.lib.AbstractOppositeDtoList) «prop.toCollectionInternalGetterName»()).copy();
+			} else {
+				oldList = new java.util.ArrayList<>(«prop.toCollectionInternalGetterName»());
+			}
 			«prop.toCollectionInternalGetterName»().remove(«paramName»);
 			firePropertyChange("«prop.toName»", oldList, «prop.toCollectionInternalGetterName»());
 		'''
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
index a8714cd..68791b4 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors: 
  * 		Florian Pirchner - Initial implementation
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
index bab82bf..9d92f05 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 9b42052..e56df16 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 4a4a389..cb12b84 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index c636648..3f50fbf 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 5113d74..08bf1cf 100644
--- 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
@@ -1,9 +1,11 @@
 /*******************************************************************************
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *******************************************************************************/
 package org.eclipse.osbp.dsl.dto.xtext.generator;
 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/imports/ShouldImportProvider.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/imports/ShouldImportProvider.java
index bd8d127..f18d8b8 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/imports/ShouldImportProvider.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/imports/ShouldImportProvider.java
@@ -1,3 +1,18 @@
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
+ * generated by Xtext 2.11.0
+
+ */
 package org.eclipse.osbp.dsl.dto.xtext.imports;
 
 import org.eclipse.emf.ecore.EClass;
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
index 2c2f882..38d3bee 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -28,8 +30,12 @@
 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.runtime.common.annotations.AsGrid
 import org.eclipse.osbp.runtime.common.annotations.AsKanbanOrdering
 import org.eclipse.osbp.runtime.common.annotations.AsKanbanState
+import org.eclipse.osbp.runtime.common.annotations.AsTable
+import org.eclipse.osbp.runtime.common.annotations.CreateAt
+import org.eclipse.osbp.runtime.common.annotations.CreateBy
 import org.eclipse.osbp.runtime.common.annotations.Dirty
 import org.eclipse.osbp.runtime.common.annotations.Dispose
 import org.eclipse.osbp.runtime.common.annotations.DomainDescription
@@ -42,13 +48,18 @@
 import org.eclipse.osbp.runtime.common.annotations.Range
 import org.eclipse.osbp.runtime.common.annotations.TargetEnumConstraint
 import org.eclipse.osbp.runtime.common.annotations.TargetEnumConstraints
+import org.eclipse.osbp.runtime.common.annotations.UIGroup
 import org.eclipse.osbp.runtime.common.annotations.UniqueEntry
+import org.eclipse.osbp.runtime.common.annotations.UpdateAt
+import org.eclipse.osbp.runtime.common.annotations.UpdateBy
 import org.eclipse.osbp.runtime.common.annotations.Version
 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.JvmType
 import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.common.types.util.TypeReferences
 import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
 
 /** 
@@ -60,6 +71,8 @@
 	@Inject extension TypeHelper
 	@Inject extension DtoModelExtensions
 	@Inject extension AnnotationExtension
+	@Inject
+	private TypeReferences references;
 
 	def protected dispatch void internalProcessAnnotation(LDto dto, JvmGenericType jvmType) {
 		dto.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmType);
@@ -198,11 +211,42 @@
 			if (att.asKanbanState) {
 				field.annotations += prop.toAnnotation(typeof(AsKanbanState))
 			}
+			
+			if(att.annotationPresent(references.findDeclaredType(typeof(UpdateBy), att))) {
+				field.annotations += prop.toAnnotation(typeof(UpdateBy))
+			}
+			
+			if(att.annotationPresent(references.findDeclaredType(typeof(UpdateAt), att))) {
+				field.annotations += prop.toAnnotation(typeof(UpdateAt))
+			}
+			
+			if(att.annotationPresent(references.findDeclaredType(typeof(CreateBy), att))) {
+				field.annotations += prop.toAnnotation(typeof(CreateBy))
+			}
+			
+			if(att.annotationPresent(references.findDeclaredType(typeof(CreateAt), att))) {
+				field.annotations += prop.toAnnotation(typeof(CreateAt))
+			}
+
+			if (att.isGrouped) {
+				val groupAnnotation = prop.toAnnotation(typeof(UIGroup))
+				groupAnnotation.addAnnAttr(prop, "name", att.groupName)
+				field.annotations += groupAnnotation
+			}
 		}
 
 		// also inherit annotations from the entities
 		prop.inheritedFeature.toInheritedConstraintAnnotations(field)
 	}
+	
+	def boolean annotationPresent(LEntityAttribute attribute, JvmType type) {
+		for(anno : attribute.resolvedAnnotations) {
+			if(anno.annotation.annotationType === type){
+				return true
+			}
+		}
+		return false
+	}
 
 	def protected dispatch void internalProcessAnnotation(LDtoInheritedReference prop, JvmField field) {
 		prop.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(field);
@@ -246,6 +290,19 @@
 			// create the properties annotations
 			prop.toPropertiesAnnotation(mergeKeyAndValues(prop), field)
 		}
+
+		if (inheritedRef.isGrouped) {
+			val groupAnnotation = prop.toAnnotation(typeof(UIGroup))
+			groupAnnotation.addAnnAttr(prop, "name", inheritedRef.groupName)
+			field.annotations += groupAnnotation
+		}
+		if (inheritedRef.asGrid) {
+			field.annotations += prop.toAnnotation(typeof(AsGrid))
+		}
+		if (inheritedRef.asTable) {
+			field.annotations += prop.toAnnotation(typeof(AsTable))
+		}
+		
 	}
 
 	def void addConstraintsAnno(LResultFilters constraints, JvmField jvmField, LDto mapsTo) {
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
index d50aa14..3c7c581 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 9fb60f2..f89e624 100644
--- 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
@@ -2,9 +2,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 5bf20b0..1c4f778 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DatatypesFilterScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DatatypesFilterScope.java
index a5a55d8..879fc99 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DatatypesFilterScope.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DatatypesFilterScope.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoGrammarScopeProvider.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoGrammarScopeProvider.java
index 856688c..a2dddc0 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoGrammarScopeProvider.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoGrammarScopeProvider.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoImportSectionNamespaceScopeProvider.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoImportSectionNamespaceScopeProvider.java
index a0b4759..0e650ad 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoImportSectionNamespaceScopeProvider.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoImportSectionNamespaceScopeProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  * 		Hans Georg Glöckler - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoInheritedAttributeScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoInheritedAttributeScope.java
index fe3fb35..bc8c0d8 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoInheritedAttributeScope.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoInheritedAttributeScope.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoInheritedReferenceScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoInheritedReferenceScope.java
index 21b93fd..9e1599a 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoInheritedReferenceScope.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoInheritedReferenceScope.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoRefOppositeScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoRefOppositeScope.java
index 2590418..7737eef 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoRefOppositeScope.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/DtoRefOppositeScope.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/InheritTypesFilterScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/InheritTypesFilterScope.java
index 17bcda7..b0044c7 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/InheritTypesFilterScope.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/InheritTypesFilterScope.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/UUIdFilterScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/UUIdFilterScope.java
index e2ac561..6cf3b98 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/UUIdFilterScope.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/UUIdFilterScope.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/WrappedTypeFilterScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/WrappedTypeFilterScope.java
index c47e35c..dfe12ad 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/WrappedTypeFilterScope.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scoping/WrappedTypeFilterScope.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 94aae77..0e1d7a1 100644
--- 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
@@ -2,9 +2,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/validation/DtoGrammarValidator.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/validation/DtoGrammarValidator.java
index 034bdd3..2aa7fc4 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/validation/DtoGrammarValidator.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/validation/DtoGrammarValidator.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -382,7 +384,7 @@
 			if (entry.getValue() > 1) {
 				int i = 0;
 				for (LDtoFeature feature : dto.getFeatures()) {
-					if (feature.getName().equals(entry.getKey())) {
+					if (feature.getName() != null && 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]);
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
index 41d1972..69ccfa6 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  * 		Florian Pirchner - Initial implementation
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
index 5deaf56..ad0413c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  * 		Florian Pirchner - Initial implementation
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
index 042f158..6f37461 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 1ce13f5..d5aa532 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index f044428..5c44c3c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
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
index 4c336f3..fffbe85 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -174,6 +176,9 @@
 	 */
 	public static String toEntityName(String prefix) {
 		int idx = prefix.lastIndexOf("Dto");
+		if(idx == -1){
+			return "NoDto";
+		}
 		return prefix.substring(0, idx);
 	}
 
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/LICENSE.txt b/org.eclipse.osbp.dsl.eclipse.ui.examples/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.eclipse.ui.examples/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/about.html b/org.eclipse.osbp.dsl.eclipse.ui.examples/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.eclipse.ui.examples/about.html
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/about.properties b/org.eclipse.osbp.dsl.eclipse.ui.examples/about.properties
index 16c44c1..b66857d 100644
--- a/org.eclipse.osbp.dsl.eclipse.ui.examples/about.properties
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/about.properties
@@ -1,9 +1,11 @@
 # 
 # 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
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 #  Florian Pirchner - copied source from Xtend and adjusted to EntityDSL
@@ -21,9 +23,11 @@
 \n\
 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
     Florian Pirchner - copied source from Xtend and adjusted to EntityDSL\n\
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/build.properties b/org.eclipse.osbp.dsl.eclipse.ui.examples/build.properties
index b6c5a6e..dabb6fa 100644
--- a/org.eclipse.osbp.dsl.eclipse.ui.examples/build.properties
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/build.properties
@@ -7,6 +7,6 @@
                icons/,\
                about.ini,\
                contents/,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                embedd-examples.xml
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/epl-2.0.html b/org.eclipse.osbp.dsl.eclipse.ui.examples/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/epl-v10.html b/org.eclipse.osbp.dsl.eclipse.ui.examples/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.eclipse.ui.examples/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/license.html b/org.eclipse.osbp.dsl.eclipse.ui.examples/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.eclipse.ui.examples/license.html
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/pom.xml b/org.eclipse.osbp.dsl.eclipse.ui.examples/pom.xml
index 1a25437..456dae8 100644
--- a/org.eclipse.osbp.dsl.eclipse.ui.examples/pom.xml
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/LICENSE.txt b/org.eclipse.osbp.dsl.eclipse.ui/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.eclipse.ui/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.eclipse.ui/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/about.html b/org.eclipse.osbp.dsl.eclipse.ui/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.eclipse.ui/about.html
+++ b/org.eclipse.osbp.dsl.eclipse.ui/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/about.properties b/org.eclipse.osbp.dsl.eclipse.ui/about.properties
index 9f9d2a8..8a7f0eb 100644
--- a/org.eclipse.osbp.dsl.eclipse.ui/about.properties
+++ b/org.eclipse.osbp.dsl.eclipse.ui/about.properties
@@ -1,9 +1,11 @@
 # 
 # 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
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 #  Florian Pirchner - copied source from Xtend and adjusted to EntityDSL
@@ -21,9 +23,11 @@
 \n\
 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
     Florian Pirchner - copied source from Xtend and adjusted to EntityDSL\n\
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/build.properties b/org.eclipse.osbp.dsl.eclipse.ui/build.properties
index 2b19f4f..210921f 100644
--- a/org.eclipse.osbp.dsl.eclipse.ui/build.properties
+++ b/org.eclipse.osbp.dsl.eclipse.ui/build.properties
@@ -9,14 +9,14 @@
                .,\
                icons/,\
                about.ini,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                LICENSE.txt
 src.includes = about.html,\
                about.ini,\
                about.mappings,\
                about.properties,\
-               epl-v10.html,\
+               epl-2.0.html,\
                LICENSE.txt,\
                license.html,\
                icons/
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/epl-2.0.html b/org.eclipse.osbp.dsl.eclipse.ui/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/epl-v10.html b/org.eclipse.osbp.dsl.eclipse.ui/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.eclipse.ui/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/license.html b/org.eclipse.osbp.dsl.eclipse.ui/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.eclipse.ui/license.html
+++ b/org.eclipse.osbp.dsl.eclipse.ui/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/pom.xml b/org.eclipse.osbp.dsl.eclipse.ui/pom.xml
index 8ad12d7..17b6563 100644
--- a/org.eclipse.osbp.dsl.eclipse.ui/pom.xml
+++ b/org.eclipse.osbp.dsl.eclipse.ui/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index 87b33ef..159f01c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors: 
  * 		Cristiano Gaviao - Initial implementation
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
index 024d353..5acd4b0 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *     Florian Pirchner - copied source from Xtend and adjusted to EntityDSL
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
index 91a3947..bf09cdd 100644
--- 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
@@ -1,9 +1,11 @@
 /*******************************************************************************
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *     Florian Pirchner - copied source from Xtend and adjusted to EntityDSL
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
index c2bbff6..faf6054 100644
--- 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
@@ -1,9 +1,11 @@
 /*******************************************************************************
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *     Florian Pirchner - copied source from Xtend and adjusted to EntityDSL
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
index f9df9b8..7db5460 100644
--- 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
@@ -1,9 +1,11 @@
 /*******************************************************************************
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *     Florian Pirchner - copied source from Xtend and adjusted to EntityDSL
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
index 20d257d..a377389 100644
--- 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
@@ -1,9 +1,11 @@
 /*******************************************************************************
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *     Cristiano Gavião - initial API and implementation
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
index f60131c..d0fc61c 100644
--- 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
@@ -1,9 +1,11 @@
 /*******************************************************************************
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *     Cristiano Gavião - initial API and implementation
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
index e00bd77..104a0fd 100644
--- 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
@@ -1,9 +1,11 @@
 /*******************************************************************************
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *     Cristiano Gavião - initial API and implementation
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
index 78c3a7f..52f90e8 100644
--- 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
@@ -1,9 +1,11 @@
 /*******************************************************************************
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *     Cristiano Gavião - initial API and implementation
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/.project b/org.eclipse.osbp.dsl.entity.xtext.edit/.project
index 1562b74..c7155ba 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/.project
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/.project
@@ -20,15 +20,9 @@
 			<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.babel.editor.rbeNature</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
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/about.html b/org.eclipse.osbp.dsl.entity.xtext.edit/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/about.html
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/about.properties b/org.eclipse.osbp.dsl.entity.xtext.edit/about.properties
index 88de031..e06449c 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/about.properties
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/about.properties
@@ -1,9 +1,11 @@
 # 
 # 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
+#  are made available under the terms of the Eclipse Public License 2.0 
 #  which accompanies this distribution, and is available at
-#  http://www.eclipse.org/legal/epl-v10.html
+#  https://www.eclipse.org/legal/epl-2.0/
+#
+#  SPDX-License-Identifier: EPL-2.0
 # 
 #  Based on ideas from Xtext, Xtend, Xcore
 # 
@@ -21,9 +23,11 @@
 \n\
 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\
+ are made available under the terms of the Eclipse Public License 2.0  \n\
  which accompanies this distribution, and is available at \n\
- http://www.eclipse.org/legal/epl-v10.html \n\
+ https://www.eclipse.org/legal/epl-2.0/ \n\
+ \n\
+ SPDX-License-Identifier: EPL-2.0 \n\
 \n\
  Based on ideas from Xtext, Xtend, Xcore\n\
    \n\
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_group_LUIGroup.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_group_LUIGroup.gif
new file mode 100644
index 0000000..7cc18f1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_group_LUIGroup.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_groups_LUIGroup.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_groups_LUIGroup.gif
new file mode 100644
index 0000000..7cc18f1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_groups_LUIGroup.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLUIGroup_groupAttributes_LUIGroupAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLUIGroup_groupAttributes_LUIGroupAttribute.gif
new file mode 100644
index 0000000..cd91b67
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLUIGroup_groupAttributes_LUIGroupAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLUIGroup_groupMembers_LUIGroupAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLUIGroup_groupMembers_LUIGroupAttribute.gif
new file mode 100644
index 0000000..cd91b67
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLUIGroup_groupMembers_LUIGroupAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LUIGroup.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LUIGroup.gif
new file mode 100644
index 0000000..7bac4fd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LUIGroup.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LUIGroupAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LUIGroupAttribute.gif
new file mode 100644
index 0000000..b3643da
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LUIGroupAttribute.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
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/license.html
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.properties b/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.properties
index 9fef1b1..2381946 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.properties
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.properties
@@ -1,8 +1,10 @@
 # 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 
+#  are made available under the terms of the Eclipse Public License 2.0  
 #  which accompanies this distribution, and is available at 
-#  http://www.eclipse.org/legal/epl-v10.html 
+#  https://www.eclipse.org/legal/epl-2.0/ 
+# 
+#  SPDX-License-Identifier: EPL-2.0 
 # 
 #  Based on ideas from Xtext, Xtend, Xcore
 #    
@@ -434,3 +436,13 @@
 _UI_LKanbanEnumInfo_i18nKey_feature = I1 8n Key
 _UI_LKanbanStateDetail_infos_feature = Infos
 _UI_LEntityAttribute_onKanbanCardStates_feature = On Kanban Card States
+_UI_LUIGroup_type = LUI Group
+_UI_LUIGroupAttribute_type = LUI Group Attribute
+_UI_LUIGroup_groupName_feature = Group Name
+_UI_LUIGroup_groupAttributes_feature = Group Attributes
+_UI_LUIGroupAttribute_feature_feature = Feature
+_UI_LUIGroup_name_feature = Name
+_UI_LUIGroup_groupMembers_feature = Group Members
+_UI_LUIGroupAttribute_member_feature = Member
+_UI_LEntity_group_feature = Group
+_UI_LEntity_groups_feature = Groups
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.xml b/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.xml
index bf8a44e..4d83f1d 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.xml
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.xml
@@ -4,9 +4,11 @@
 <!--
  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 
+  are made available under the terms of the Eclipse Public License 2.0  
   which accompanies this distribution, and is available at 
-  http://www.eclipse.org/legal/epl-v10.html 
+  https://www.eclipse.org/legal/epl-2.0/ 
+ 
+  SPDX-License-Identifier: EPL-2.0 
  
   Based on ideas from Xtext, Xtend, Xcore
     
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/pom.xml b/org.eclipse.osbp.dsl.entity.xtext.edit/pom.xml
index a71ac8b..3cbd996 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/pom.xml
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index 59e9164..94a991e 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/EntitySuperIndexItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/EntitySuperIndexItemProvider.java
index 6e3cf49..8e4e017 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/EntitySuperIndexItemProvider.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/EntitySuperIndexItemProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index b2bebd7..44e2d5c 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
@@ -78,6 +80,8 @@
 			addRangeFilteringPropertyDescriptor(object);
 			addUniqueEntryPropertyDescriptor(object);
 			addTypePropertyDescriptor(object);
+			addIsGroupedPropertyDescriptor(object);
+			addGroupNamePropertyDescriptor(object);
 			addTypedNamePropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
@@ -392,6 +396,50 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Is Grouped feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIsGroupedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_isGrouped_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_isGrouped_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__IS_GROUPED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Group Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addGroupNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_groupName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_groupName_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__GROUP_NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the Typed Name feature. <!--
 	 * begin-user-doc --> <!-- end-user-doc -->
 	 * 
@@ -526,6 +574,8 @@
 			case OSBPEntityPackage.LBEAN_ATTRIBUTE__FILTERING:
 			case OSBPEntityPackage.LBEAN_ATTRIBUTE__RANGE_FILTERING:
 			case OSBPEntityPackage.LBEAN_ATTRIBUTE__UNIQUE_ENTRY:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__IS_GROUPED:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__GROUP_NAME:
 			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPED_NAME:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
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
index dc1d5af..0a3d3af 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 3446421..8e43ae5 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index a84429c..bee3ac7 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
@@ -58,6 +60,10 @@
 
 			addLazyPropertyDescriptor(object);
 			addCascadingPropertyDescriptor(object);
+			addIsGroupedPropertyDescriptor(object);
+			addGroupNamePropertyDescriptor(object);
+			addAsGridPropertyDescriptor(object);
+			addAsTablePropertyDescriptor(object);
 			addTypePropertyDescriptor(object);
 			addOppositePropertyDescriptor(object);
 		}
@@ -109,6 +115,94 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Is Grouped feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIsGroupedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_isGrouped_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_isGrouped_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__IS_GROUPED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Group Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addGroupNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_groupName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_groupName_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__GROUP_NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the As Grid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAsGridPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_asGrid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_asGrid_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__AS_GRID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the As Table feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAsTablePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_asTable_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_asTable_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__AS_TABLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the Type feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -224,6 +318,10 @@
 		switch (notification.getFeatureID(LBeanReference.class)) {
 			case OSBPEntityPackage.LBEAN_REFERENCE__LAZY:
 			case OSBPEntityPackage.LBEAN_REFERENCE__CASCADING:
+			case OSBPEntityPackage.LBEAN_REFERENCE__IS_GROUPED:
+			case OSBPEntityPackage.LBEAN_REFERENCE__GROUP_NAME:
+			case OSBPEntityPackage.LBEAN_REFERENCE__AS_GRID:
+			case OSBPEntityPackage.LBEAN_REFERENCE__AS_TABLE:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 			case OSBPEntityPackage.LBEAN_REFERENCE__PROPERTIES:
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
index a709fab..ae2b595 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
@@ -81,6 +83,8 @@
 			addRangeFilteringPropertyDescriptor(object);
 			addUniqueEntryPropertyDescriptor(object);
 			addTypePropertyDescriptor(object);
+			addIsGroupedPropertyDescriptor(object);
+			addGroupNamePropertyDescriptor(object);
 			addAsKanbanStatePropertyDescriptor(object);
 			addOnKanbanCardPropertyDescriptor(object);
 			addAsKanbanOrderingPropertyDescriptor(object);
@@ -400,6 +404,50 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Is Grouped feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIsGroupedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_isGrouped_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_isGrouped_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__IS_GROUPED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Group Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addGroupNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_groupName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_groupName_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__GROUP_NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the As Kanban State feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -627,6 +675,8 @@
 			case OSBPEntityPackage.LENTITY_ATTRIBUTE__FILTERING:
 			case OSBPEntityPackage.LENTITY_ATTRIBUTE__RANGE_FILTERING:
 			case OSBPEntityPackage.LENTITY_ATTRIBUTE__UNIQUE_ENTRY:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__IS_GROUPED:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__GROUP_NAME:
 			case OSBPEntityPackage.LENTITY_ATTRIBUTE__AS_KANBAN_STATE:
 			case OSBPEntityPackage.LENTITY_ATTRIBUTE__ON_KANBAN_CARD:
 			case OSBPEntityPackage.LENTITY_ATTRIBUTE__AS_KANBAN_ORDERING:
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
index 48ef238..e0cd8ba 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 68ed394..86395bc 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 2c7cfde..fae714d 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 19a8d31..2893467 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index d3b3756..a90309b 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index e4afaed..c9925d7 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
@@ -58,6 +60,10 @@
 
 			addLazyPropertyDescriptor(object);
 			addCascadingPropertyDescriptor(object);
+			addIsGroupedPropertyDescriptor(object);
+			addGroupNamePropertyDescriptor(object);
+			addAsGridPropertyDescriptor(object);
+			addAsTablePropertyDescriptor(object);
 			addTypePropertyDescriptor(object);
 			addOppositePropertyDescriptor(object);
 			addFilterDepthPropertyDescriptor(object);
@@ -110,6 +116,94 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Is Grouped feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIsGroupedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_isGrouped_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_isGrouped_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__IS_GROUPED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Group Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addGroupNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_groupName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_groupName_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__GROUP_NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the As Grid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAsGridPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_asGrid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_asGrid_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__AS_GRID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the As Table feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAsTablePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_asTable_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_asTable_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__AS_TABLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the Type feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -247,6 +341,10 @@
 		switch (notification.getFeatureID(LEntityReference.class)) {
 			case OSBPEntityPackage.LENTITY_REFERENCE__LAZY:
 			case OSBPEntityPackage.LENTITY_REFERENCE__CASCADING:
+			case OSBPEntityPackage.LENTITY_REFERENCE__IS_GROUPED:
+			case OSBPEntityPackage.LENTITY_REFERENCE__GROUP_NAME:
+			case OSBPEntityPackage.LENTITY_REFERENCE__AS_GRID:
+			case OSBPEntityPackage.LENTITY_REFERENCE__AS_TABLE:
 			case OSBPEntityPackage.LENTITY_REFERENCE__FILTER_DEPTH:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntitySuperIndexItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntitySuperIndexItemProvider.java
index 8c95bfa..3cef767 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntitySuperIndexItemProvider.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntitySuperIndexItemProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 1e6f76a..d0aa839 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LKanbanEnumInfoItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LKanbanEnumInfoItemProvider.java
index e52df44..4756568 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LKanbanEnumInfoItemProvider.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LKanbanEnumInfoItemProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LKanbanStateDetailItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LKanbanStateDetailItemProvider.java
index 208fe3f..a92de70 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LKanbanStateDetailItemProvider.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LKanbanStateDetailItemProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
@@ -23,6 +25,7 @@
 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;
@@ -30,8 +33,8 @@
 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.entity.LKanbanStateDetail;
 import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityFactory;
 import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LNestedFeatureItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LNestedFeatureItemProvider.java
index b4b3290..44f532a 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LNestedFeatureItemProvider.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LNestedFeatureItemProvider.java
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index b6864a9..4976f81 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index b127090..9cddee8 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index 6c13d43..c632ca9 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
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
index b603f62..f7944c7 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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 
+ *  are made available under the terms of the Eclipse Public License 2.0  
  *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html 
+ *  https://www.eclipse.org/legal/epl-2.0/ 
+ * 
+ *  SPDX-License-Identifier: EPL-2.0 
  * 
  *  Based on ideas from Xtext, Xtend, Xcore
  *    
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/LICENSE.txt b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/epl-2.0.html b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/epl-v10.html b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/license.html b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/license.html
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/pom.xml b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/pom.xml
index 7e803e3..2a5304d 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/pom.xml
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/pom.xml
@@ -3,9 +3,11 @@
 <!--# 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 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--# Florian Pirchner - Initial implementation -->
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
index b3e5daf..6cfe9b4 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors: 
  * 		Florian Pirchner - Initial implementation
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
index aab7f5a..043428a 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  */
 package org.eclipse.osbp.dsl.entity.xtext.grammar.tests
 
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
index 3254967..d98dbaa 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors: 
  * 		Florian Pirchner - Initial implementation
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
index bbae0ae..ef1b904 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Sources based on {@link org.eclipse.xtext.xbase.compiler.CompilationTestHelper}
  * 
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
index d987a17..25a531e 100644
--- 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
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors: 
  * 		Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/xtend-gen/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/GrammarTests.java b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/xtend-gen/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/GrammarTests.java
new file mode 100644
index 0000000..f4831f3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/xtend-gen/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/GrammarTests.java
@@ -0,0 +1,2330 @@
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.eclipse.osbp.dsl.entity.xtext.grammar.tests;
+
+import com.google.inject.Inject;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import org.eclipse.osbp.dsl.common.xtext.validation.CommonGrammarJavaValidator;
+import org.eclipse.osbp.dsl.entity.xtext.grammar.tests.InjectorProvider;
+import org.eclipse.osbp.dsl.entity.xtext.grammar.tests.ParseHelper;
+import org.eclipse.osbp.dsl.entity.xtext.validation.EntityGrammarJavaValidator;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityModel;
+import org.eclipse.xtend2.lib.StringConcatenation;
+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.eclipse.xtext.xbase.lib.Exceptions;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.xtext.xbase.lib.Functions.Function1;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(XtextRunner.class)
+@InjectWith(InjectorProvider.class)
+@SuppressWarnings("all")
+public class GrammarTests {
+  @Inject
+  @Extension
+  private ValidationTestHelper _validationTestHelper;
+  
+  @Inject
+  @Extension
+  private ParseHelper<LEntityModel> _parseHelper;
+  
+  private Map<String, Issue> result;
+  
+  private Map<String, Issue> result2;
+  
+  @Test
+  public void id_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test { \t\t\t\t\t\t\t\t\t\t// warn: no id");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id; ");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long other; \t\t\t\t\t\t\t\t\t// error: duplicate id");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__MISSING_ID);
+      Assert.assertSame(_severity, Severity.WARNING);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__MISSING_ID);
+      Assert.assertEquals(_lineNumber, 5);
+      Severity _severity_1 = this.severity(EntityGrammarJavaValidator.CODE__DUPLICATE_ID);
+      Assert.assertSame(_severity_1, Severity.ERROR);
+      int _lineNumber_1 = this.lineNumber(EntityGrammarJavaValidator.CODE__DUPLICATE_ID);
+      Assert.assertEquals(_lineNumber_1, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void id_2() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t ");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 extends Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long someValue;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long other;\t\t\t\t\t\t\t\t// error: duplicate id");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DUPLICATE_ID);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DUPLICATE_ID);
+      Assert.assertEquals(_lineNumber, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void version_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("version long version;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("version long other;\t\t\t\t\t\t\t\t// error: duplicate version");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DUPLICATE_VERSION);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DUPLICATE_VERSION);
+      Assert.assertEquals(_lineNumber, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void version_2() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t ");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("version long version;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 extends Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long someValue;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("version long other;\t\t\t\t\t\t\t// error: duplicate version");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DUPLICATE_VERSION);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DUPLICATE_VERSION);
+      Assert.assertEquals(_lineNumber, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void featureName_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long xxyy;\t\t\t\t\t\t\t\t\t// error: duplicate property");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long other;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long xxyy;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DUPLICATE_PROPERTY_NAME);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DUPLICATE_PROPERTY_NAME);
+      Assert.assertEquals(_lineNumber, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void featureName_2() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t ");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long xxyy;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 extends Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long someValue;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long xxyy;\t\t\t\t\t\t\t\t// error: duplicate property (supertype)");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DUPLICATE_PROPERTY_NAME);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DUPLICATE_PROPERTY_NAME);
+      Assert.assertEquals(_lineNumber, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void featureName_3() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long other;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref Test xxyy;\t\t\t\t\t\t\t\t\t// error: duplicate property var-ref");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long xxyy;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DUPLICATE_PROPERTY_NAME);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DUPLICATE_PROPERTY_NAME);
+      Assert.assertEquals(_lineNumber, 11);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void featureName_4() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long xxyy;\t\t\t\t\t\t\t\t\t// error: duplicate property id-ref");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref Test xxyy;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DUPLICATE_PROPERTY_NAME);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DUPLICATE_PROPERTY_NAME);
+      Assert.assertEquals(_lineNumber, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void featureName_5() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long xxyy;\t\t\t\t\t\t\t\t\t// error: duplicate property id-var");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long xxyy;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DUPLICATE_PROPERTY_NAME);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DUPLICATE_PROPERTY_NAME);
+      Assert.assertEquals(_lineNumber, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void duplicatePackage_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long xxyy;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long xxyy;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {\t\t\t// error: duplicate package");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long xxyy;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long xxyy;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(CommonGrammarJavaValidator.CODE__DUPLICATE_LPACKAGE_IN_FILE);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(CommonGrammarJavaValidator.CODE__DUPLICATE_LPACKAGE_IN_FILE);
+      Assert.assertEquals(_lineNumber, 14);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void duplicateType_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long xy;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {\t\t\t\t\t\t\t\t\t\t// error: duplicate type (entity)");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long xxyy;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(CommonGrammarJavaValidator.CODE__DUPLICATE_LTYPE_IN_PROJECT);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(CommonGrammarJavaValidator.CODE__DUPLICATE_LTYPE_IN_PROJECT);
+      Assert.assertEquals(_lineNumber, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void duplicateType_2() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype number jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("datatype number jvmType Float as primitive; \t\t\t// error: duplicate type (datatype)");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long xy;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long xxyy;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(CommonGrammarJavaValidator.CODE__DUPLICATE_LDATATYPE_IN_PACKAGE);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(CommonGrammarJavaValidator.CODE__DUPLICATE_LDATATYPE_IN_PACKAGE);
+      Assert.assertEquals(_lineNumber, 4);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void duplicateType_3() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests1 {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test1 {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long xxyy;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long abc;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests2 {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;\t\t\t\t// error: duplicate type (in other package)");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long cde;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long ghi;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void invalidPrimitive_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype xyz jvmType String as primitive;\t\t\t\t// error: no such primitive Java type");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id xyz id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(CommonGrammarJavaValidator.CODE__NOT_A_VALID_PRIMITIVE);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(CommonGrammarJavaValidator.CODE__NOT_A_VALID_PRIMITIVE);
+      Assert.assertEquals(_lineNumber, 3);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void invalidPrimitive_2() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype abc jvmType Long as primitive;\t\t\t\t\t// ok");
+      _builder.newLine();
+      _builder.append("datatype xyz jvmType String as primitive;\t\t\t\t// error: no such primitive Java type");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id xyz id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(CommonGrammarJavaValidator.CODE__NOT_A_VALID_PRIMITIVE);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(CommonGrammarJavaValidator.CODE__NOT_A_VALID_PRIMITIVE);
+      Assert.assertEquals(_lineNumber, 4);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void javaKeyword() {
+    try {
+      for (final String keyword : CommonGrammarJavaValidator.javakeywords) {
+        {
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+          _builder.newLine();
+          _builder.append("\t");
+          _builder.append("entity Test {");
+          _builder.newLine();
+          _builder.append("\t\t");
+          _builder.append("var long ");
+          _builder.append(keyword, "\t\t");
+          _builder.append("; \t\t\t\t\t\t// each keyword produces error");
+          _builder.newLineIfNotEmpty();
+          _builder.append("\t");
+          _builder.append("}");
+          _builder.newLine();
+          _builder.append("}");
+          _builder.newLine();
+          LEntityModel _parse = this._parseHelper.parse(_builder);
+          List<Issue> _validate = this._validationTestHelper.validate(_parse);
+          final Function1<Issue, String> _function = new Function1<Issue, String>() {
+            public String apply(final Issue it) {
+              return it.getCode();
+            }
+          };
+          Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+          this.result = _map;
+          Collection<Issue> _values = this.result.values();
+          Iterator<Issue> _iterator = _values.iterator();
+          Issue _next = _iterator.next();
+          Severity _severity = _next.getSeverity();
+          Assert.assertSame(_severity, Severity.ERROR);
+        }
+      }
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void bidirectionalAssociation_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref Test2[*] mytests;\t\t\t\t\t\t// error: no opposite reference given");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__MISSING_OPPOSITE_REFERENCE);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__MISSING_OPPOSITE_REFERENCE);
+      Assert.assertEquals(_lineNumber, 7);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void bidirectionalAssociation_2() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref Test2[*] mytests opposite nosuchthing;\t\t// error: type of opposite ref cannot be resolved");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 { ");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("} ");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Collection<Issue> _values = this.result.values();
+      Iterator<Issue> _iterator = _values.iterator();
+      Issue _next = _iterator.next();
+      Severity _severity = _next.getSeverity();
+      Assert.assertSame(_severity, Severity.ERROR);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void bidirectionalAssociation_3() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref Test2[*]\t\t\t\t\t\t\t\t\t// error: no opposite reference given");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("bean Test2 { ");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("} ");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Collection<Issue> _values = this.result.values();
+      Iterator<Issue> _iterator = _values.iterator();
+      Issue _next = _iterator.next();
+      Severity _severity = _next.getSeverity();
+      Assert.assertSame(_severity, Severity.ERROR);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void bidirectionalAssociation_4() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref Test2[*] mytests opposite nosuchthing;\t\t// error: type of opposite ref cannot be resolved");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("bean Test2 { ");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("} ");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Collection<Issue> _values = this.result.values();
+      Iterator<Issue> _iterator = _values.iterator();
+      Issue _next = _iterator.next();
+      Severity _severity = _next.getSeverity();
+      Assert.assertSame(_severity, Severity.ERROR);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void manyToMany_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t\t\t\t\t          ");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref Test2[1..*] mytests opposite xyz;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t\t\t\t\t       ");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 { ");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref Test[*] xyz opposite mytests;\t\t\t\t// error: many-to-many between entities");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(CommonGrammarJavaValidator.CODE__MANY_TO_MANY__NOT_SUPPORTED);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(CommonGrammarJavaValidator.CODE__MANY_TO_MANY__NOT_SUPPORTED);
+      Assert.assertEquals(_lineNumber, 16);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void manyToMany_2() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t\t\t\t\t          ");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("bean Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref Test2[1..*] mytests opposite xyz;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t\t\t\t\t       ");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("bean Test2 { ");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref Test[*] xyz opposite mytests;\t\t\t\t// error: many-to-many between beans");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(CommonGrammarJavaValidator.CODE__MANY_TO_MANY__NOT_SUPPORTED);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(CommonGrammarJavaValidator.CODE__MANY_TO_MANY__NOT_SUPPORTED);
+      Assert.assertEquals(_lineNumber, 16);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void cascade_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref cascade Test2[1..*] mytests opposite xyz;\t// error: cascade goes only one way (entities)");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 { ");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref cascade Test xyz;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__BIDIRECTIONAL_CASCADE_INVALID);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__BIDIRECTIONAL_CASCADE_INVALID);
+      Assert.assertEquals(_lineNumber, 9);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void cascade_2() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("bean Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref cascade Test2[1..*] mytests opposite xyz;\t// error: cascade goes only one way (beans)");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("bean Test2 { ");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref cascade Test xyz;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__BIDIRECTIONAL_CASCADE_INVALID);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__BIDIRECTIONAL_CASCADE_INVALID);
+      Assert.assertEquals(_lineNumber, 9);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void cascade_3() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref cascade Test2[1] mytests opposite xyz;\t\t// error: cascade must not go from many to one common parent");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t\t\t\t\t       ");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 { ");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref Test[*] xyz opposite mytests;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("} ");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__CASCADE_DIRECTION_INVALID);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__CASCADE_DIRECTION_INVALID);
+      Assert.assertEquals(_lineNumber, 9);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void cascade_4() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("bean Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref cascade Test2[1] mytests opposite xyz;\t\t// error: cascade must not go from many to one common parent");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t\t\t\t\t       ");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("bean Test2 { ");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("ref Test[*] xyz opposite mytests;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("} ");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__CASCADE_DIRECTION_INVALID);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__CASCADE_DIRECTION_INVALID);
+      Assert.assertEquals(_lineNumber, 9);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void inheritance_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("inheritance per class {}");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 extends Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("inheritance per subclass {}  \t\t\t\t\t// warning: inheritance mismatch");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long y;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE);
+      Assert.assertSame(_severity, Severity.WARNING);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE);
+      Assert.assertEquals(_lineNumber, 13);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void inheritance_2() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("inheritance per subclass {}");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long x;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long mynumber;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 extends Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("inheritance per class {}  \t\t\t\t\t// warning: inheritance mismatch");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("var long y;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE);
+      Assert.assertSame(_severity, Severity.WARNING);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE);
+      Assert.assertEquals(_lineNumber, 13);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void inheritance_3() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("inheritance per class {");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("discriminatorColumn disc;");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("discriminatorType STRING;");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("discriminatorValue MAINTYPE;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 extends Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("inheritance per class {");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("discriminatorColumn disc;\t\t\t\t\t// warning: ignored");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE);
+      Assert.assertSame(_severity, Severity.WARNING);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE);
+      Assert.assertEquals(_lineNumber, 16);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void inheritance_4() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("inheritance per class {");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("discriminatorColumn disc;");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("discriminatorType STRING;");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("discriminatorValue MAINTYPE;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 extends Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("inheritance per class {");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("discriminatorType INT;\t\t\t\t\t\t// warning: ignored");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE);
+      Assert.assertSame(_severity, Severity.WARNING);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE);
+      Assert.assertEquals(_lineNumber, 16);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void inheritance_5() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("inheritance per class {");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("discriminatorColumn disc;");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("discriminatorType STRING;");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("discriminatorValue MAINTYPE;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 extends Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("inheritance per class {");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("discriminatorValue MAINTYPE;\t\t\t\t// error: not unique");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__INHERITANCE_DISCRIMINATOR_VALUE_NOT_UNIQUE);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__INHERITANCE_DISCRIMINATOR_VALUE_NOT_UNIQUE);
+      Assert.assertEquals(_lineNumber, 15);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void persistence_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("tableName testtable;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 extends Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("tableName testtable;\t\t\t\t\t\t\t// error: table name in use");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DUPLICATE_PERSISTENCE);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DUPLICATE_PERSISTENCE);
+      Assert.assertEquals(_lineNumber, 11);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void persistence_2() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("tableName testtable;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 extends Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("tableName Testtable;\t\t\t\t\t\t\t// error: table name equal when using CAPITALS");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__DUPLICATE_PERSISTENCE);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__DUPLICATE_PERSISTENCE);
+      Assert.assertEquals(_lineNumber, 11);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void persistence_3() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.dsl.^entity.xtext.tests {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("datatype long jvmType Long as primitive;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("tableName testtable;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("id long id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test2 extends Test {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("tableName testTable;\t\t\t\t\t\t\t// no error: CamelCase recognized -> TEST_TABLE");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void historized_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("\t");
+      _builder.append("package org.eclipse.osbp.dsl.entitydsl.histtimevalidation {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype String jvmType String;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("inheritance per class{}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("uuid String id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("historized entity SubTest extends Test {  \t\t\t\t// error: no historized entities in inheritance");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("} ");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__HISTORIZED_IN_SUBCLASS);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__HISTORIZED_IN_SUBCLASS);
+      Assert.assertEquals(_lineNumber, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void historized_2() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("\t");
+      _builder.append("package org.eclipse.osbp.dsl.entitydsl.histtimevalidation {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype String jvmType String;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("inheritance per subclass{}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("uuid String id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("historized entity SubTest extends Test {  \t\t\t\t// error: no historized entities in inheritance");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("} ");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__HISTORIZED_IN_SUBCLASS);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__HISTORIZED_IN_SUBCLASS);
+      Assert.assertEquals(_lineNumber, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void timedependent_1() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("\t");
+      _builder.append("package org.eclipse.osbp.dsl.entitydsl.histtimevalidation {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype String jvmType String;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("inheritance per class{}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("uuid String id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("timedependent entity SubTest extends Test {  \t\t\t\t// error: no historized entities in inheritance");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("} ");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__TIMEDEPENDENT_IN_SUBCLASS);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__TIMEDEPENDENT_IN_SUBCLASS);
+      Assert.assertEquals(_lineNumber, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void timedependent_2() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("\t");
+      _builder.append("package org.eclipse.osbp.dsl.entitydsl.histtimevalidation {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype String jvmType String;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("entity Test {");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("inheritance per subclass{}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("uuid String id;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("timedependent entity SubTest extends Test {  \t\t\t\t// error: no historized entities in inheritance");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("} ");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__TIMEDEPENDENT_IN_SUBCLASS);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__TIMEDEPENDENT_IN_SUBCLASS);
+      Assert.assertEquals(_lineNumber, 10);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void historized_id() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.entitydsltest.validation {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype String jvmType String;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("historized entity MyTest {");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("var String stuff;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__MISSING_ID_FOR_VERSIONED);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__MISSING_ID_FOR_VERSIONED);
+      Assert.assertEquals(_lineNumber, 6);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  @Test
+  public void timedependent_id() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("package org.eclipse.osbp.entitydsltest.validation {");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("datatype String jvmType String;");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("timedependent entity MyTest {");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("var String stuff;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      LEntityModel _parse = this._parseHelper.parse(_builder);
+      List<Issue> _validate = this._validationTestHelper.validate(_parse);
+      final Function1<Issue, String> _function = new Function1<Issue, String>() {
+        public String apply(final Issue it) {
+          return it.getCode();
+        }
+      };
+      Map<String, Issue> _map = IterableExtensions.<String, Issue>toMap(_validate, _function);
+      this.result = _map;
+      Severity _severity = this.severity(EntityGrammarJavaValidator.CODE__MISSING_ID_FOR_VERSIONED);
+      Assert.assertSame(_severity, Severity.ERROR);
+      int _lineNumber = this.lineNumber(EntityGrammarJavaValidator.CODE__MISSING_ID_FOR_VERSIONED);
+      Assert.assertEquals(_lineNumber, 6);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+  
+  /**
+   * Helper methods
+   */
+  public int lineNumber(final String code) {
+    Issue _get = this.result.get(code);
+    return (_get.getLineNumber()).intValue();
+  }
+  
+  public Severity severity(final String code) {
+    Issue _get = this.result.get(code);
+    return _get.getSeverity();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/LICENSE.txt b/org.eclipse.osbp.dsl.entity.xtext.ide/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/LICENSE.txt
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/about.html b/org.eclipse.osbp.dsl.entity.xtext.ide/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/about.html
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/about.properties b/org.eclipse.osbp.dsl.entity.xtext.ide/about.properties
index 2b2129a..c03d7d1 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/about.properties
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/about.properties
@@ -1,9 +1,11 @@
 # 
 # Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 # All rights reserved. This program and the accompanying material
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributor
 #  Florian Pirchner - Initial implementation
@@ -18,9 +20,11 @@
 \n\
 Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\n\
 All rights reserved. This program and the accompanying material\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available \n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributor\n\
         Florian Pirchner - Initial implementation\n\
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/build.properties b/org.eclipse.osbp.dsl.entity.xtext.ide/build.properties
index e7ef78e..8491fc9 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/build.properties
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/build.properties
@@ -3,7 +3,7 @@
                about.ini,\
                about.html,\
                LICENSE.txt,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html
 bin.includes = about.properties,\
                about.mappings,\
@@ -11,7 +11,7 @@
                about.html,\
                LICENSE.txt,\
                .,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                META-INF/
 source.. = src/,\
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/epl-2.0.html b/org.eclipse.osbp.dsl.entity.xtext.ide/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/epl-v10.html b/org.eclipse.osbp.dsl.entity.xtext.ide/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/license.html b/org.eclipse.osbp.dsl.entity.xtext.ide/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/license.html
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/pom.xml b/org.eclipse.osbp.dsl.entity.xtext.ide/pom.xml
index 1ffb7c9..9d3ac7e 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/pom.xml
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/pom.xml
@@ -2,9 +2,11 @@
 <!--#======================================================================= -->
 <!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
 <!--# All rights reserved. This program and the accompanying materials -->
-<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# are made available under the terms of the Eclipse Public License 2.0  -->
 <!--# which accompanies this distribution, and is available at -->
-<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
 <!--# -->
 <!--# Contributors: -->
 <!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/AbstractEntityGrammarIdeModule.java b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/AbstractEntityGrammarIdeModule.java
index 87cc7f6..e94975c 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/AbstractEntityGrammarIdeModule.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/AbstractEntityGrammarIdeModule.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/EntityGrammarParser.java b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/EntityGrammarParser.java
index ab10fdd..329596e 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/EntityGrammarParser.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/EntityGrammarParser.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -44,10 +46,12 @@
 					put(grammarAccess.getClassAccess().getAlternatives_2_0_1_1(), "rule__Class__Alternatives_2_0_1_1");
 					put(grammarAccess.getClassAccess().getAlternatives_2_0_10(), "rule__Class__Alternatives_2_0_10");
 					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2(), "rule__EntityFeature__Alternatives_2");
+					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_8_2(), "rule__EntityFeature__Alternatives_2_0_1_8_2");
 					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.getEntityFeatureAccess().getAlternatives_2_1_1_2_2(), "rule__EntityFeature__Alternatives_2_1_1_2_2");
 					put(grammarAccess.getBeanFeatureAccess().getAlternatives_2(), "rule__BeanFeature__Alternatives_2");
+					put(grammarAccess.getBeanFeatureAccess().getAlternatives_2_0_1_6_2(), "rule__BeanFeature__Alternatives_2_0_1_6_2");
 					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.getBeanFeatureAccess().getAlternatives_2_1_1_1_1(), "rule__BeanFeature__Alternatives_2_1_1_1_1");
@@ -138,22 +142,26 @@
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_5(), "rule__EntityFeature__Group_2_0_1_5__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_8(), "rule__EntityFeature__Group_2_0_1_8__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_9(), "rule__EntityFeature__Group_2_0_1_9__0");
-					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_9_3(), "rule__EntityFeature__Group_2_0_1_9_3__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_10(), "rule__EntityFeature__Group_2_0_1_10__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_10_3(), "rule__EntityFeature__Group_2_0_1_10_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_0_5(), "rule__EntityFeature__Group_2_1_1_0_5__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_3(), "rule__EntityFeature__Group_2_1_1_0_5_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_1_5(), "rule__EntityFeature__Group_2_1_1_1_5__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_3(), "rule__EntityFeature__Group_2_1_1_1_5_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_5(), "rule__EntityFeature__Group_2_1_1_2_5__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_9(), "rule__EntityFeature__Group_2_1_1_2_9__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11(), "rule__EntityFeature__Group_2_1_1_2_11__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_12(), "rule__EntityFeature__Group_2_1_1_2_12__0");
-					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_12_3(), "rule__EntityFeature__Group_2_1_1_2_12_3__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_13(), "rule__EntityFeature__Group_2_1_1_2_13__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_13_3(), "rule__EntityFeature__Group_2_1_1_2_13_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");
@@ -169,16 +177,19 @@
 					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_0_1_8(), "rule__BeanFeature__Group_2_0_1_8__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_0_1_8_3(), "rule__BeanFeature__Group_2_0_1_8_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_0_5(), "rule__BeanFeature__Group_2_1_1_0_5__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0_5_3(), "rule__BeanFeature__Group_2_1_1_0_5_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_4(), "rule__BeanFeature__Group_2_1_1_1_4__0");
 					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_6(), "rule__BeanFeature__Group_2_1_1_1_6__0");
-					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_6_3(), "rule__BeanFeature__Group_2_1_1_1_6_3__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_7(), "rule__BeanFeature__Group_2_1_1_1_7__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_7_3(), "rule__BeanFeature__Group_2_1_1_1_7_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");
@@ -532,22 +543,30 @@
 					put(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_0_1_6(), "rule__EntityFeature__NameAssignment_2_0_1_6");
 					put(grammarAccess.getEntityFeatureAccess().getPersistenceInfoAssignment_2_0_1_7(), "rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7");
 					put(grammarAccess.getEntityFeatureAccess().getOppositeAssignment_2_0_1_8_1(), "rule__EntityFeature__OppositeAssignment_2_0_1_8_1");
-					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_9_2(), "rule__EntityFeature__PropertiesAssignment_2_0_1_9_2");
-					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_9_3_1(), "rule__EntityFeature__PropertiesAssignment_2_0_1_9_3_1");
-					put(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_10(), "rule__EntityFeature__ResultFiltersAssignment_2_0_1_10");
+					put(grammarAccess.getEntityFeatureAccess().getAsGridAssignment_2_0_1_8_2_0(), "rule__EntityFeature__AsGridAssignment_2_0_1_8_2_0");
+					put(grammarAccess.getEntityFeatureAccess().getAsTableAssignment_2_0_1_8_2_1(), "rule__EntityFeature__AsTableAssignment_2_0_1_8_2_1");
+					put(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_0_1_9_0(), "rule__EntityFeature__IsGroupedAssignment_2_0_1_9_0");
+					put(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_0_1_9_1(), "rule__EntityFeature__GroupNameAssignment_2_0_1_9_1");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_10_2(), "rule__EntityFeature__PropertiesAssignment_2_0_1_10_2");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_10_3_1(), "rule__EntityFeature__PropertiesAssignment_2_0_1_10_3_1");
+					put(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_11(), "rule__EntityFeature__ResultFiltersAssignment_2_0_1_11");
 					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().getIsGroupedAssignment_2_1_1_0_4_0(), "rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0");
+					put(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_0_4_1(), "rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_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().getIsGroupedAssignment_2_1_1_1_4_0(), "rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0");
+					put(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_1_4_1(), "rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1");
+					put(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionAssignment_2_1_1_1_6(), "rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_6");
 					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");
@@ -567,8 +586,10 @@
 					put(grammarAccess.getEntityFeatureAccess().getDecentKanbanOrderAssignment_2_1_1_2_9_1(), "rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1");
 					put(grammarAccess.getEntityFeatureAccess().getPersistenceInfoAssignment_2_1_1_2_10(), "rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10");
 					put(grammarAccess.getEntityFeatureAccess().getOppositeAssignment_2_1_1_2_11_1(), "rule__EntityFeature__OppositeAssignment_2_1_1_2_11_1");
-					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_12_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_2_12_2");
-					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_12_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_2_12_3_1");
+					put(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_2_12_0(), "rule__EntityFeature__IsGroupedAssignment_2_1_1_2_12_0");
+					put(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_2_12_1(), "rule__EntityFeature__GroupNameAssignment_2_1_1_2_12_1");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_13_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_2_13_2");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_13_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_2_13_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");
@@ -585,15 +606,21 @@
 					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(), "rule__BeanFeature__ResultFiltersAssignment_2_0_1_8");
+					put(grammarAccess.getBeanFeatureAccess().getAsGridAssignment_2_0_1_6_2_0(), "rule__BeanFeature__AsGridAssignment_2_0_1_6_2_0");
+					put(grammarAccess.getBeanFeatureAccess().getAsTableAssignment_2_0_1_6_2_1(), "rule__BeanFeature__AsTableAssignment_2_0_1_6_2_1");
+					put(grammarAccess.getBeanFeatureAccess().getIsGroupedAssignment_2_0_1_7_0(), "rule__BeanFeature__IsGroupedAssignment_2_0_1_7_0");
+					put(grammarAccess.getBeanFeatureAccess().getGroupNameAssignment_2_0_1_7_1(), "rule__BeanFeature__GroupNameAssignment_2_0_1_7_1");
+					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_0_1_8_2(), "rule__BeanFeature__PropertiesAssignment_2_0_1_8_2");
+					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_0_1_8_3_1(), "rule__BeanFeature__PropertiesAssignment_2_0_1_8_3_1");
+					put(grammarAccess.getBeanFeatureAccess().getResultFiltersAssignment_2_0_1_9(), "rule__BeanFeature__ResultFiltersAssignment_2_0_1_9");
 					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().getIsGroupedAssignment_2_1_1_0_4_0(), "rule__BeanFeature__IsGroupedAssignment_2_1_1_0_4_0");
+					put(grammarAccess.getBeanFeatureAccess().getGroupNameAssignment_2_1_1_0_4_1(), "rule__BeanFeature__GroupNameAssignment_2_1_1_0_4_1");
+					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2(), "rule__BeanFeature__PropertiesAssignment_2_1_1_0_5_2");
+					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_0_5_3_1(), "rule__BeanFeature__PropertiesAssignment_2_1_1_0_5_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().getFilteringAssignment_2_1_1_1_1_0(), "rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0");
@@ -602,8 +629,10 @@
 					put(grammarAccess.getBeanFeatureAccess().getMultiplicityAssignment_2_1_1_1_3(), "rule__BeanFeature__MultiplicityAssignment_2_1_1_1_3");
 					put(grammarAccess.getBeanFeatureAccess().getConstraintsAssignment_2_1_1_1_4_1(), "rule__BeanFeature__ConstraintsAssignment_2_1_1_1_4_1");
 					put(grammarAccess.getBeanFeatureAccess().getNameAssignment_2_1_1_1_5(), "rule__BeanFeature__NameAssignment_2_1_1_1_5");
-					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_6_2(), "rule__BeanFeature__PropertiesAssignment_2_1_1_1_6_2");
-					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_6_3_1(), "rule__BeanFeature__PropertiesAssignment_2_1_1_1_6_3_1");
+					put(grammarAccess.getBeanFeatureAccess().getIsGroupedAssignment_2_1_1_1_6_0(), "rule__BeanFeature__IsGroupedAssignment_2_1_1_1_6_0");
+					put(grammarAccess.getBeanFeatureAccess().getGroupNameAssignment_2_1_1_1_6_1(), "rule__BeanFeature__GroupNameAssignment_2_1_1_1_6_1");
+					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_7_2(), "rule__BeanFeature__PropertiesAssignment_2_1_1_1_7_2");
+					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_7_3_1(), "rule__BeanFeature__PropertiesAssignment_2_1_1_1_7_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");
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/PartialEntityGrammarContentAssistParser.java b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/PartialEntityGrammarContentAssistParser.java
index db23111..494a435 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/PartialEntityGrammarContentAssistParser.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/PartialEntityGrammarContentAssistParser.java
@@ -1,9 +1,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.g b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.g
index 310a7c8..c2c98ae 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.g
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.g
@@ -3580,6 +3580,27 @@
 	restoreStackSize(stackSize);
 }
 
+rule__EntityFeature__Alternatives_2_0_1_8_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getAsGridAssignment_2_0_1_8_2_0()); }
+		(rule__EntityFeature__AsGridAssignment_2_0_1_8_2_0)
+		{ after(grammarAccess.getEntityFeatureAccess().getAsGridAssignment_2_0_1_8_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getAsTableAssignment_2_0_1_8_2_1()); }
+		(rule__EntityFeature__AsTableAssignment_2_0_1_8_2_1)
+		{ after(grammarAccess.getEntityFeatureAccess().getAsTableAssignment_2_0_1_8_2_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__EntityFeature__Alternatives_2_1_1
 	@init {
 		int stackSize = keepStackSize();
@@ -3700,6 +3721,27 @@
 	restoreStackSize(stackSize);
 }
 
+rule__BeanFeature__Alternatives_2_0_1_6_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getBeanFeatureAccess().getAsGridAssignment_2_0_1_6_2_0()); }
+		(rule__BeanFeature__AsGridAssignment_2_0_1_6_2_0)
+		{ after(grammarAccess.getBeanFeatureAccess().getAsGridAssignment_2_0_1_6_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getBeanFeatureAccess().getAsTableAssignment_2_0_1_6_2_1()); }
+		(rule__BeanFeature__AsTableAssignment_2_0_1_6_2_1)
+		{ after(grammarAccess.getBeanFeatureAccess().getAsTableAssignment_2_0_1_6_2_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__BeanFeature__Alternatives_2_1_1
 	@init {
 		int stackSize = keepStackSize();
@@ -7840,6 +7882,7 @@
 	}
 :
 	rule__EntityFeature__Group_2_0_1__10__Impl
+	rule__EntityFeature__Group_2_0_1__11
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -7851,9 +7894,35 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_10()); }
-	(rule__EntityFeature__ResultFiltersAssignment_2_0_1_10)?
-	{ after(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_10()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_10()); }
+	(rule__EntityFeature__Group_2_0_1_10__0)?
+	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_10()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1__11
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_0_1__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1__11__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_11()); }
+	(rule__EntityFeature__ResultFiltersAssignment_2_0_1_11)?
+	{ after(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_11()); }
 )
 ;
 finally {
@@ -8029,6 +8098,7 @@
 	}
 :
 	rule__EntityFeature__Group_2_0_1_8__1__Impl
+	rule__EntityFeature__Group_2_0_1_8__2
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -8049,6 +8119,32 @@
 	restoreStackSize(stackSize);
 }
 
+rule__EntityFeature__Group_2_0_1_8__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_0_1_8__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_8__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_8_2()); }
+	(rule__EntityFeature__Alternatives_2_0_1_8_2)?
+	{ after(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_8_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 
 rule__EntityFeature__Group_2_0_1_9__0
 	@init {
@@ -8068,9 +8164,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_0_1_9_0()); }
-	'properties'
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_0_1_9_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_0_1_9_0()); }
+	(rule__EntityFeature__IsGroupedAssignment_2_0_1_9_0)
+	{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_0_1_9_0()); }
 )
 ;
 finally {
@@ -8083,7 +8179,6 @@
 	}
 :
 	rule__EntityFeature__Group_2_0_1_9__1__Impl
-	rule__EntityFeature__Group_2_0_1_9__2
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -8095,89 +8190,144 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_0_1_9_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_0_1_9_1()); }
+	(rule__EntityFeature__GroupNameAssignment_2_0_1_9_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_0_1_9_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1_10__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_0_1_10__0__Impl
+	rule__EntityFeature__Group_2_0_1_10__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_10__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_0_1_10_0()); }
+	'properties'
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_0_1_10_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_10__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_0_1_10__1__Impl
+	rule__EntityFeature__Group_2_0_1_10__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_10__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_0_1_10_1()); }
 	'('
-	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_0_1_9_1()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_0_1_10_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_0_1_9__2
+rule__EntityFeature__Group_2_0_1_10__2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_0_1_9__2__Impl
-	rule__EntityFeature__Group_2_0_1_9__3
+	rule__EntityFeature__Group_2_0_1_10__2__Impl
+	rule__EntityFeature__Group_2_0_1_10__3
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_0_1_9__2__Impl
+rule__EntityFeature__Group_2_0_1_10__2__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_9_2()); }
-	(rule__EntityFeature__PropertiesAssignment_2_0_1_9_2)
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_9_2()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_10_2()); }
+	(rule__EntityFeature__PropertiesAssignment_2_0_1_10_2)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_10_2()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_0_1_9__3
+rule__EntityFeature__Group_2_0_1_10__3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_0_1_9__3__Impl
-	rule__EntityFeature__Group_2_0_1_9__4
+	rule__EntityFeature__Group_2_0_1_10__3__Impl
+	rule__EntityFeature__Group_2_0_1_10__4
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_0_1_9__3__Impl
+rule__EntityFeature__Group_2_0_1_10__3__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_9_3()); }
-	(rule__EntityFeature__Group_2_0_1_9_3__0)*
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_9_3()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_10_3()); }
+	(rule__EntityFeature__Group_2_0_1_10_3__0)*
+	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_10_3()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_0_1_9__4
+rule__EntityFeature__Group_2_0_1_10__4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_0_1_9__4__Impl
+	rule__EntityFeature__Group_2_0_1_10__4__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_0_1_9__4__Impl
+rule__EntityFeature__Group_2_0_1_10__4__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_0_1_9_4()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_0_1_10_4()); }
 	')'
-	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_0_1_9_4()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_0_1_10_4()); }
 )
 ;
 finally {
@@ -8185,53 +8335,53 @@
 }
 
 
-rule__EntityFeature__Group_2_0_1_9_3__0
+rule__EntityFeature__Group_2_0_1_10_3__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_0_1_9_3__0__Impl
-	rule__EntityFeature__Group_2_0_1_9_3__1
+	rule__EntityFeature__Group_2_0_1_10_3__0__Impl
+	rule__EntityFeature__Group_2_0_1_10_3__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_0_1_9_3__0__Impl
+rule__EntityFeature__Group_2_0_1_10_3__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_0_1_9_3_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_0_1_10_3_0()); }
 	','
-	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_0_1_9_3_0()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_0_1_10_3_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_0_1_9_3__1
+rule__EntityFeature__Group_2_0_1_10_3__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_0_1_9_3__1__Impl
+	rule__EntityFeature__Group_2_0_1_10_3__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_0_1_9_3__1__Impl
+rule__EntityFeature__Group_2_0_1_10_3__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_9_3_1()); }
-	(rule__EntityFeature__PropertiesAssignment_2_0_1_9_3_1)
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_9_3_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_10_3_1()); }
+	(rule__EntityFeature__PropertiesAssignment_2_0_1_10_3_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_10_3_1()); }
 )
 ;
 finally {
@@ -8407,6 +8557,7 @@
 	}
 :
 	rule__EntityFeature__Group_2_1_1_0__4__Impl
+	rule__EntityFeature__Group_2_1_1_0__5
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -8427,6 +8578,32 @@
 	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().getGroup_2_1_1_0_5()); }
+	(rule__EntityFeature__Group_2_1_1_0_5__0)?
+	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 
 rule__EntityFeature__Group_2_1_1_0_2__0
 	@init {
@@ -8527,9 +8704,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_4_0()); }
-	'properties'
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_4_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_0_4_0()); }
+	(rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0)
+	{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_0_4_0()); }
 )
 ;
 finally {
@@ -8542,7 +8719,6 @@
 	}
 :
 	rule__EntityFeature__Group_2_1_1_0_4__1__Impl
-	rule__EntityFeature__Group_2_1_1_0_4__2
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -8554,89 +8730,144 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_4_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_0_4_1()); }
+	(rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_0_4_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_0_5__0__Impl
+	rule__EntityFeature__Group_2_1_1_0_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_5__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_5_0()); }
+	'properties'
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_5_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_0_5__1__Impl
+	rule__EntityFeature__Group_2_1_1_0_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_5__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_5_1()); }
 	'('
-	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_4_1()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_5_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_4__2
+rule__EntityFeature__Group_2_1_1_0_5__2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_4__2__Impl
-	rule__EntityFeature__Group_2_1_1_0_4__3
+	rule__EntityFeature__Group_2_1_1_0_5__2__Impl
+	rule__EntityFeature__Group_2_1_1_0_5__3
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_4__2__Impl
+rule__EntityFeature__Group_2_1_1_0_5__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()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2()); }
+	(rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_4__3
+rule__EntityFeature__Group_2_1_1_0_5__3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_4__3__Impl
-	rule__EntityFeature__Group_2_1_1_0_4__4
+	rule__EntityFeature__Group_2_1_1_0_5__3__Impl
+	rule__EntityFeature__Group_2_1_1_0_5__4
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_4__3__Impl
+rule__EntityFeature__Group_2_1_1_0_5__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()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_3()); }
+	(rule__EntityFeature__Group_2_1_1_0_5_3__0)*
+	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_3()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_4__4
+rule__EntityFeature__Group_2_1_1_0_5__4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_4__4__Impl
+	rule__EntityFeature__Group_2_1_1_0_5__4__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_4__4__Impl
+rule__EntityFeature__Group_2_1_1_0_5__4__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_4_4()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_5_4()); }
 	')'
-	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_4_4()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_5_4()); }
 )
 ;
 finally {
@@ -8644,53 +8875,53 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_0_4_3__0
+rule__EntityFeature__Group_2_1_1_0_5_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
+	rule__EntityFeature__Group_2_1_1_0_5_3__0__Impl
+	rule__EntityFeature__Group_2_1_1_0_5_3__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_4_3__0__Impl
+rule__EntityFeature__Group_2_1_1_0_5_3__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_0_4_3_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_0_5_3_0()); }
 	','
-	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_0_4_3_0()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_0_5_3_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_4_3__1
+rule__EntityFeature__Group_2_1_1_0_5_3__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl
+	rule__EntityFeature__Group_2_1_1_0_5_3__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl
+rule__EntityFeature__Group_2_1_1_0_5_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()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_3_1()); }
+	(rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_3_1()); }
 )
 ;
 finally {
@@ -8839,6 +9070,7 @@
 	}
 :
 	rule__EntityFeature__Group_2_1_1_1__5__Impl
+	rule__EntityFeature__Group_2_1_1_1__6
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -8850,9 +9082,35 @@
 	}
 :
 (
-	{ 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()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5()); }
+	(rule__EntityFeature__Group_2_1_1_1_5__0)?
+	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_1__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionAssignment_2_1_1_1_6()); }
+	(rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_6)
+	{ after(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionAssignment_2_1_1_1_6()); }
 )
 ;
 finally {
@@ -8878,9 +9136,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_4_0()); }
-	'properties'
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_4_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_1_4_0()); }
+	(rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0)
+	{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_1_4_0()); }
 )
 ;
 finally {
@@ -8893,7 +9151,6 @@
 	}
 :
 	rule__EntityFeature__Group_2_1_1_1_4__1__Impl
-	rule__EntityFeature__Group_2_1_1_1_4__2
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -8905,89 +9162,144 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_4_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_1_4_1()); }
+	(rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_1_4_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_1_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_1_5__0__Impl
+	rule__EntityFeature__Group_2_1_1_1_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1_5__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_5_0()); }
+	'properties'
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_5_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_1_5__1__Impl
+	rule__EntityFeature__Group_2_1_1_1_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1_5__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_5_1()); }
 	'('
-	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_4_1()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_5_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_4__2
+rule__EntityFeature__Group_2_1_1_1_5__2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_4__2__Impl
-	rule__EntityFeature__Group_2_1_1_1_4__3
+	rule__EntityFeature__Group_2_1_1_1_5__2__Impl
+	rule__EntityFeature__Group_2_1_1_1_5__3
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_4__2__Impl
+rule__EntityFeature__Group_2_1_1_1_5__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()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2()); }
+	(rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_4__3
+rule__EntityFeature__Group_2_1_1_1_5__3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_4__3__Impl
-	rule__EntityFeature__Group_2_1_1_1_4__4
+	rule__EntityFeature__Group_2_1_1_1_5__3__Impl
+	rule__EntityFeature__Group_2_1_1_1_5__4
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_4__3__Impl
+rule__EntityFeature__Group_2_1_1_1_5__3__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_4_3()); }
-	(rule__EntityFeature__Group_2_1_1_1_4_3__0)*
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_4_3()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_3()); }
+	(rule__EntityFeature__Group_2_1_1_1_5_3__0)*
+	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_3()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_4__4
+rule__EntityFeature__Group_2_1_1_1_5__4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_4__4__Impl
+	rule__EntityFeature__Group_2_1_1_1_5__4__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_4__4__Impl
+rule__EntityFeature__Group_2_1_1_1_5__4__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_4_4()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_5_4()); }
 	')'
-	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_4_4()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_5_4()); }
 )
 ;
 finally {
@@ -8995,53 +9307,53 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_1_4_3__0
+rule__EntityFeature__Group_2_1_1_1_5_3__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_4_3__0__Impl
-	rule__EntityFeature__Group_2_1_1_1_4_3__1
+	rule__EntityFeature__Group_2_1_1_1_5_3__0__Impl
+	rule__EntityFeature__Group_2_1_1_1_5_3__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_4_3__0__Impl
+rule__EntityFeature__Group_2_1_1_1_5_3__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_1_4_3_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_1_5_3_0()); }
 	','
-	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_1_4_3_0()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_1_5_3_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_4_3__1
+rule__EntityFeature__Group_2_1_1_1_5_3__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_4_3__1__Impl
+	rule__EntityFeature__Group_2_1_1_1_5_3__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_4_3__1__Impl
+rule__EntityFeature__Group_2_1_1_1_5_3__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_4_3_1()); }
-	(rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_3_1)
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_4_3_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_3_1()); }
+	(rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_3_1()); }
 )
 ;
 finally {
@@ -9379,6 +9691,7 @@
 	}
 :
 	rule__EntityFeature__Group_2_1_1_2__12__Impl
+	rule__EntityFeature__Group_2_1_1_2__13
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -9399,6 +9712,32 @@
 	restoreStackSize(stackSize);
 }
 
+rule__EntityFeature__Group_2_1_1_2__13
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_2__13__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_2__13__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_13()); }
+	(rule__EntityFeature__Group_2_1_1_2_13__0)?
+	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_13()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 
 rule__EntityFeature__Group_2_1_1_2_5__0
 	@init {
@@ -9661,9 +10000,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_2_12_0()); }
-	'properties'
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_2_12_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_2_12_0()); }
+	(rule__EntityFeature__IsGroupedAssignment_2_1_1_2_12_0)
+	{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_2_12_0()); }
 )
 ;
 finally {
@@ -9676,7 +10015,6 @@
 	}
 :
 	rule__EntityFeature__Group_2_1_1_2_12__1__Impl
-	rule__EntityFeature__Group_2_1_1_2_12__2
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -9688,89 +10026,144 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_2_12_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_2_12_1()); }
+	(rule__EntityFeature__GroupNameAssignment_2_1_1_2_12_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_2_12_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_2_13__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_2_13__0__Impl
+	rule__EntityFeature__Group_2_1_1_2_13__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_2_13__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_2_13_0()); }
+	'properties'
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_2_13_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_2_13__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_2_13__1__Impl
+	rule__EntityFeature__Group_2_1_1_2_13__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_2_13__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_2_13_1()); }
 	'('
-	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_2_12_1()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_2_13_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__2
+rule__EntityFeature__Group_2_1_1_2_13__2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_12__2__Impl
-	rule__EntityFeature__Group_2_1_1_2_12__3
+	rule__EntityFeature__Group_2_1_1_2_13__2__Impl
+	rule__EntityFeature__Group_2_1_1_2_13__3
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__2__Impl
+rule__EntityFeature__Group_2_1_1_2_13__2__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_12_2()); }
-	(rule__EntityFeature__PropertiesAssignment_2_1_1_2_12_2)
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_12_2()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_13_2()); }
+	(rule__EntityFeature__PropertiesAssignment_2_1_1_2_13_2)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_13_2()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__3
+rule__EntityFeature__Group_2_1_1_2_13__3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_12__3__Impl
-	rule__EntityFeature__Group_2_1_1_2_12__4
+	rule__EntityFeature__Group_2_1_1_2_13__3__Impl
+	rule__EntityFeature__Group_2_1_1_2_13__4
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__3__Impl
+rule__EntityFeature__Group_2_1_1_2_13__3__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_12_3()); }
-	(rule__EntityFeature__Group_2_1_1_2_12_3__0)*
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_12_3()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_13_3()); }
+	(rule__EntityFeature__Group_2_1_1_2_13_3__0)*
+	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_13_3()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__4
+rule__EntityFeature__Group_2_1_1_2_13__4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_12__4__Impl
+	rule__EntityFeature__Group_2_1_1_2_13__4__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__4__Impl
+rule__EntityFeature__Group_2_1_1_2_13__4__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_2_12_4()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_2_13_4()); }
 	')'
-	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_2_12_4()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_2_13_4()); }
 )
 ;
 finally {
@@ -9778,53 +10171,53 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_2_12_3__0
+rule__EntityFeature__Group_2_1_1_2_13_3__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_12_3__0__Impl
-	rule__EntityFeature__Group_2_1_1_2_12_3__1
+	rule__EntityFeature__Group_2_1_1_2_13_3__0__Impl
+	rule__EntityFeature__Group_2_1_1_2_13_3__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12_3__0__Impl
+rule__EntityFeature__Group_2_1_1_2_13_3__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_2_12_3_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_2_13_3_0()); }
 	','
-	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_2_12_3_0()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_2_13_3_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12_3__1
+rule__EntityFeature__Group_2_1_1_2_13_3__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_12_3__1__Impl
+	rule__EntityFeature__Group_2_1_1_2_13_3__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12_3__1__Impl
+rule__EntityFeature__Group_2_1_1_2_13_3__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_12_3_1()); }
-	(rule__EntityFeature__PropertiesAssignment_2_1_1_2_12_3_1)
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_12_3_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_13_3_1()); }
+	(rule__EntityFeature__PropertiesAssignment_2_1_1_2_13_3_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_13_3_1()); }
 )
 ;
 finally {
@@ -10891,6 +11284,7 @@
 	}
 :
 	rule__BeanFeature__Group_2_0_1__8__Impl
+	rule__BeanFeature__Group_2_0_1__9
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -10902,9 +11296,35 @@
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getResultFiltersAssignment_2_0_1_8()); }
-	(rule__BeanFeature__ResultFiltersAssignment_2_0_1_8)?
-	{ after(grammarAccess.getBeanFeatureAccess().getResultFiltersAssignment_2_0_1_8()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_0_1_8()); }
+	(rule__BeanFeature__Group_2_0_1_8__0)?
+	{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_0_1_8()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_0_1__9
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__BeanFeature__Group_2_0_1__9__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_0_1__9__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getBeanFeatureAccess().getResultFiltersAssignment_2_0_1_9()); }
+	(rule__BeanFeature__ResultFiltersAssignment_2_0_1_9)?
+	{ after(grammarAccess.getBeanFeatureAccess().getResultFiltersAssignment_2_0_1_9()); }
 )
 ;
 finally {
@@ -11026,6 +11446,7 @@
 	}
 :
 	rule__BeanFeature__Group_2_0_1_6__1__Impl
+	rule__BeanFeature__Group_2_0_1_6__2
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -11046,6 +11467,32 @@
 	restoreStackSize(stackSize);
 }
 
+rule__BeanFeature__Group_2_0_1_6__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__BeanFeature__Group_2_0_1_6__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_0_1_6__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getBeanFeatureAccess().getAlternatives_2_0_1_6_2()); }
+	(rule__BeanFeature__Alternatives_2_0_1_6_2)?
+	{ after(grammarAccess.getBeanFeatureAccess().getAlternatives_2_0_1_6_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 
 rule__BeanFeature__Group_2_0_1_7__0
 	@init {
@@ -11065,9 +11512,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_0_1_7_0()); }
-	'properties'
-	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_0_1_7_0()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getIsGroupedAssignment_2_0_1_7_0()); }
+	(rule__BeanFeature__IsGroupedAssignment_2_0_1_7_0)
+	{ after(grammarAccess.getBeanFeatureAccess().getIsGroupedAssignment_2_0_1_7_0()); }
 )
 ;
 finally {
@@ -11080,7 +11527,6 @@
 	}
 :
 	rule__BeanFeature__Group_2_0_1_7__1__Impl
-	rule__BeanFeature__Group_2_0_1_7__2
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -11092,89 +11538,144 @@
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_0_1_7_1()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getGroupNameAssignment_2_0_1_7_1()); }
+	(rule__BeanFeature__GroupNameAssignment_2_0_1_7_1)
+	{ after(grammarAccess.getBeanFeatureAccess().getGroupNameAssignment_2_0_1_7_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BeanFeature__Group_2_0_1_8__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__BeanFeature__Group_2_0_1_8__0__Impl
+	rule__BeanFeature__Group_2_0_1_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_0_1_8__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_0_1_8_0()); }
+	'properties'
+	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_0_1_8_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_0_1_8__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__BeanFeature__Group_2_0_1_8__1__Impl
+	rule__BeanFeature__Group_2_0_1_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_0_1_8__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_0_1_8_1()); }
 	'('
-	{ after(grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_0_1_7_1()); }
+	{ after(grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_0_1_8_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_0_1_7__2
+rule__BeanFeature__Group_2_0_1_8__2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_0_1_7__2__Impl
-	rule__BeanFeature__Group_2_0_1_7__3
+	rule__BeanFeature__Group_2_0_1_8__2__Impl
+	rule__BeanFeature__Group_2_0_1_8__3
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_0_1_7__2__Impl
+rule__BeanFeature__Group_2_0_1_8__2__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_0_1_7_2()); }
-	(rule__BeanFeature__PropertiesAssignment_2_0_1_7_2)
-	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_0_1_7_2()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_0_1_8_2()); }
+	(rule__BeanFeature__PropertiesAssignment_2_0_1_8_2)
+	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_0_1_8_2()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_0_1_7__3
+rule__BeanFeature__Group_2_0_1_8__3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_0_1_7__3__Impl
-	rule__BeanFeature__Group_2_0_1_7__4
+	rule__BeanFeature__Group_2_0_1_8__3__Impl
+	rule__BeanFeature__Group_2_0_1_8__4
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_0_1_7__3__Impl
+rule__BeanFeature__Group_2_0_1_8__3__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_0_1_7_3()); }
-	(rule__BeanFeature__Group_2_0_1_7_3__0)*
-	{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_0_1_7_3()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_0_1_8_3()); }
+	(rule__BeanFeature__Group_2_0_1_8_3__0)*
+	{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_0_1_8_3()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_0_1_7__4
+rule__BeanFeature__Group_2_0_1_8__4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_0_1_7__4__Impl
+	rule__BeanFeature__Group_2_0_1_8__4__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_0_1_7__4__Impl
+rule__BeanFeature__Group_2_0_1_8__4__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_0_1_7_4()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_0_1_8_4()); }
 	')'
-	{ after(grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_0_1_7_4()); }
+	{ after(grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_0_1_8_4()); }
 )
 ;
 finally {
@@ -11182,53 +11683,53 @@
 }
 
 
-rule__BeanFeature__Group_2_0_1_7_3__0
+rule__BeanFeature__Group_2_0_1_8_3__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_0_1_7_3__0__Impl
-	rule__BeanFeature__Group_2_0_1_7_3__1
+	rule__BeanFeature__Group_2_0_1_8_3__0__Impl
+	rule__BeanFeature__Group_2_0_1_8_3__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_0_1_7_3__0__Impl
+rule__BeanFeature__Group_2_0_1_8_3__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_0_1_7_3_0()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_0_1_8_3_0()); }
 	','
-	{ after(grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_0_1_7_3_0()); }
+	{ after(grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_0_1_8_3_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_0_1_7_3__1
+rule__BeanFeature__Group_2_0_1_8_3__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_0_1_7_3__1__Impl
+	rule__BeanFeature__Group_2_0_1_8_3__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_0_1_7_3__1__Impl
+rule__BeanFeature__Group_2_0_1_8_3__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_0_1_7_3_1()); }
-	(rule__BeanFeature__PropertiesAssignment_2_0_1_7_3_1)
-	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_0_1_7_3_1()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_0_1_8_3_1()); }
+	(rule__BeanFeature__PropertiesAssignment_2_0_1_8_3_1)
+	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_0_1_8_3_1()); }
 )
 ;
 finally {
@@ -11404,6 +11905,7 @@
 	}
 :
 	rule__BeanFeature__Group_2_1_1_0__4__Impl
+	rule__BeanFeature__Group_2_1_1_0__5
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -11424,6 +11926,32 @@
 	restoreStackSize(stackSize);
 }
 
+rule__BeanFeature__Group_2_1_1_0__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__BeanFeature__Group_2_1_1_0__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_1_1_0__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0_5()); }
+	(rule__BeanFeature__Group_2_1_1_0_5__0)?
+	{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 
 rule__BeanFeature__Group_2_1_1_0_2__0
 	@init {
@@ -11524,9 +12052,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_1_1_0_4_0()); }
-	'properties'
-	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_1_1_0_4_0()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getIsGroupedAssignment_2_1_1_0_4_0()); }
+	(rule__BeanFeature__IsGroupedAssignment_2_1_1_0_4_0)
+	{ after(grammarAccess.getBeanFeatureAccess().getIsGroupedAssignment_2_1_1_0_4_0()); }
 )
 ;
 finally {
@@ -11539,7 +12067,6 @@
 	}
 :
 	rule__BeanFeature__Group_2_1_1_0_4__1__Impl
-	rule__BeanFeature__Group_2_1_1_0_4__2
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -11551,89 +12078,144 @@
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_4_1()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getGroupNameAssignment_2_1_1_0_4_1()); }
+	(rule__BeanFeature__GroupNameAssignment_2_1_1_0_4_1)
+	{ after(grammarAccess.getBeanFeatureAccess().getGroupNameAssignment_2_1_1_0_4_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BeanFeature__Group_2_1_1_0_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__BeanFeature__Group_2_1_1_0_5__0__Impl
+	rule__BeanFeature__Group_2_1_1_0_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_1_1_0_5__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_1_1_0_5_0()); }
+	'properties'
+	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_1_1_0_5_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_1_1_0_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__BeanFeature__Group_2_1_1_0_5__1__Impl
+	rule__BeanFeature__Group_2_1_1_0_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_1_1_0_5__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_5_1()); }
 	'('
-	{ after(grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_4_1()); }
+	{ after(grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_5_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_0_4__2
+rule__BeanFeature__Group_2_1_1_0_5__2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_1_1_0_4__2__Impl
-	rule__BeanFeature__Group_2_1_1_0_4__3
+	rule__BeanFeature__Group_2_1_1_0_5__2__Impl
+	rule__BeanFeature__Group_2_1_1_0_5__3
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_0_4__2__Impl
+rule__BeanFeature__Group_2_1_1_0_5__2__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_0_4_2()); }
-	(rule__BeanFeature__PropertiesAssignment_2_1_1_0_4_2)
-	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_0_4_2()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2()); }
+	(rule__BeanFeature__PropertiesAssignment_2_1_1_0_5_2)
+	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_0_4__3
+rule__BeanFeature__Group_2_1_1_0_5__3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_1_1_0_4__3__Impl
-	rule__BeanFeature__Group_2_1_1_0_4__4
+	rule__BeanFeature__Group_2_1_1_0_5__3__Impl
+	rule__BeanFeature__Group_2_1_1_0_5__4
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_0_4__3__Impl
+rule__BeanFeature__Group_2_1_1_0_5__3__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0_4_3()); }
-	(rule__BeanFeature__Group_2_1_1_0_4_3__0)*
-	{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0_4_3()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0_5_3()); }
+	(rule__BeanFeature__Group_2_1_1_0_5_3__0)*
+	{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0_5_3()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_0_4__4
+rule__BeanFeature__Group_2_1_1_0_5__4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_1_1_0_4__4__Impl
+	rule__BeanFeature__Group_2_1_1_0_5__4__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_0_4__4__Impl
+rule__BeanFeature__Group_2_1_1_0_5__4__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_1_1_0_4_4()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_1_1_0_5_4()); }
 	')'
-	{ after(grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_1_1_0_4_4()); }
+	{ after(grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_1_1_0_5_4()); }
 )
 ;
 finally {
@@ -11641,53 +12223,53 @@
 }
 
 
-rule__BeanFeature__Group_2_1_1_0_4_3__0
+rule__BeanFeature__Group_2_1_1_0_5_3__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_1_1_0_4_3__0__Impl
-	rule__BeanFeature__Group_2_1_1_0_4_3__1
+	rule__BeanFeature__Group_2_1_1_0_5_3__0__Impl
+	rule__BeanFeature__Group_2_1_1_0_5_3__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_0_4_3__0__Impl
+rule__BeanFeature__Group_2_1_1_0_5_3__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_1_1_0_4_3_0()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_1_1_0_5_3_0()); }
 	','
-	{ after(grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_1_1_0_4_3_0()); }
+	{ after(grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_1_1_0_5_3_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_0_4_3__1
+rule__BeanFeature__Group_2_1_1_0_5_3__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_1_1_0_4_3__1__Impl
+	rule__BeanFeature__Group_2_1_1_0_5_3__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_0_4_3__1__Impl
+rule__BeanFeature__Group_2_1_1_0_5_3__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_0_4_3_1()); }
-	(rule__BeanFeature__PropertiesAssignment_2_1_1_0_4_3_1)
-	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_0_4_3_1()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_0_5_3_1()); }
+	(rule__BeanFeature__PropertiesAssignment_2_1_1_0_5_3_1)
+	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_0_5_3_1()); }
 )
 ;
 finally {
@@ -11863,6 +12445,7 @@
 	}
 :
 	rule__BeanFeature__Group_2_1_1_1__6__Impl
+	rule__BeanFeature__Group_2_1_1_1__7
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -11883,6 +12466,32 @@
 	restoreStackSize(stackSize);
 }
 
+rule__BeanFeature__Group_2_1_1_1__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__BeanFeature__Group_2_1_1_1__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_1_1_1__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_7()); }
+	(rule__BeanFeature__Group_2_1_1_1_7__0)?
+	{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 
 rule__BeanFeature__Group_2_1_1_1_4__0
 	@init {
@@ -11983,9 +12592,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_1_1_1_6_0()); }
-	'properties'
-	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_1_1_1_6_0()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getIsGroupedAssignment_2_1_1_1_6_0()); }
+	(rule__BeanFeature__IsGroupedAssignment_2_1_1_1_6_0)
+	{ after(grammarAccess.getBeanFeatureAccess().getIsGroupedAssignment_2_1_1_1_6_0()); }
 )
 ;
 finally {
@@ -11998,7 +12607,6 @@
 	}
 :
 	rule__BeanFeature__Group_2_1_1_1_6__1__Impl
-	rule__BeanFeature__Group_2_1_1_1_6__2
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -12010,89 +12618,144 @@
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_6_1()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getGroupNameAssignment_2_1_1_1_6_1()); }
+	(rule__BeanFeature__GroupNameAssignment_2_1_1_1_6_1)
+	{ after(grammarAccess.getBeanFeatureAccess().getGroupNameAssignment_2_1_1_1_6_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BeanFeature__Group_2_1_1_1_7__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__BeanFeature__Group_2_1_1_1_7__0__Impl
+	rule__BeanFeature__Group_2_1_1_1_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_1_1_1_7__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_1_1_1_7_0()); }
+	'properties'
+	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_1_1_1_7_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_1_1_1_7__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__BeanFeature__Group_2_1_1_1_7__1__Impl
+	rule__BeanFeature__Group_2_1_1_1_7__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Group_2_1_1_1_7__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_7_1()); }
 	'('
-	{ after(grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_6_1()); }
+	{ after(grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_7_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_1_6__2
+rule__BeanFeature__Group_2_1_1_1_7__2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_1_1_1_6__2__Impl
-	rule__BeanFeature__Group_2_1_1_1_6__3
+	rule__BeanFeature__Group_2_1_1_1_7__2__Impl
+	rule__BeanFeature__Group_2_1_1_1_7__3
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_1_6__2__Impl
+rule__BeanFeature__Group_2_1_1_1_7__2__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_6_2()); }
-	(rule__BeanFeature__PropertiesAssignment_2_1_1_1_6_2)
-	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_6_2()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_7_2()); }
+	(rule__BeanFeature__PropertiesAssignment_2_1_1_1_7_2)
+	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_7_2()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_1_6__3
+rule__BeanFeature__Group_2_1_1_1_7__3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_1_1_1_6__3__Impl
-	rule__BeanFeature__Group_2_1_1_1_6__4
+	rule__BeanFeature__Group_2_1_1_1_7__3__Impl
+	rule__BeanFeature__Group_2_1_1_1_7__4
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_1_6__3__Impl
+rule__BeanFeature__Group_2_1_1_1_7__3__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_6_3()); }
-	(rule__BeanFeature__Group_2_1_1_1_6_3__0)*
-	{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_6_3()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_7_3()); }
+	(rule__BeanFeature__Group_2_1_1_1_7_3__0)*
+	{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_7_3()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_1_6__4
+rule__BeanFeature__Group_2_1_1_1_7__4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_1_1_1_6__4__Impl
+	rule__BeanFeature__Group_2_1_1_1_7__4__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_1_6__4__Impl
+rule__BeanFeature__Group_2_1_1_1_7__4__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_1_1_1_6_4()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_1_1_1_7_4()); }
 	')'
-	{ after(grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_1_1_1_6_4()); }
+	{ after(grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_1_1_1_7_4()); }
 )
 ;
 finally {
@@ -12100,53 +12763,53 @@
 }
 
 
-rule__BeanFeature__Group_2_1_1_1_6_3__0
+rule__BeanFeature__Group_2_1_1_1_7_3__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_1_1_1_6_3__0__Impl
-	rule__BeanFeature__Group_2_1_1_1_6_3__1
+	rule__BeanFeature__Group_2_1_1_1_7_3__0__Impl
+	rule__BeanFeature__Group_2_1_1_1_7_3__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_1_6_3__0__Impl
+rule__BeanFeature__Group_2_1_1_1_7_3__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_1_1_1_6_3_0()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_1_1_1_7_3_0()); }
 	','
-	{ after(grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_1_1_1_6_3_0()); }
+	{ after(grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_1_1_1_7_3_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_1_6_3__1
+rule__BeanFeature__Group_2_1_1_1_7_3__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__BeanFeature__Group_2_1_1_1_6_3__1__Impl
+	rule__BeanFeature__Group_2_1_1_1_7_3__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__Group_2_1_1_1_6_3__1__Impl
+rule__BeanFeature__Group_2_1_1_1_7_3__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_6_3_1()); }
-	(rule__BeanFeature__PropertiesAssignment_2_1_1_1_6_3_1)
-	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_6_3_1()); }
+	{ before(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_7_3_1()); }
+	(rule__BeanFeature__PropertiesAssignment_2_1_1_1_7_3_1)
+	{ after(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_7_3_1()); }
 )
 ;
 finally {
@@ -37322,45 +37985,117 @@
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_0_1_9_2
+rule__EntityFeature__AsGridAssignment_2_0_1_8_2_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_9_2_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_9_2_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getAsGridAsGridKeyword_2_0_1_8_2_0_0()); }
+		(
+			{ before(grammarAccess.getEntityFeatureAccess().getAsGridAsGridKeyword_2_0_1_8_2_0_0()); }
+			'asGrid'
+			{ after(grammarAccess.getEntityFeatureAccess().getAsGridAsGridKeyword_2_0_1_8_2_0_0()); }
+		)
+		{ after(grammarAccess.getEntityFeatureAccess().getAsGridAsGridKeyword_2_0_1_8_2_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_0_1_9_3_1
+rule__EntityFeature__AsTableAssignment_2_0_1_8_2_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_9_3_1_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_9_3_1_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getAsTableAsTableKeyword_2_0_1_8_2_1_0()); }
+		(
+			{ before(grammarAccess.getEntityFeatureAccess().getAsTableAsTableKeyword_2_0_1_8_2_1_0()); }
+			'asTable'
+			{ after(grammarAccess.getEntityFeatureAccess().getAsTableAsTableKeyword_2_0_1_8_2_1_0()); }
+		)
+		{ after(grammarAccess.getEntityFeatureAccess().getAsTableAsTableKeyword_2_0_1_8_2_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__ResultFiltersAssignment_2_0_1_10
+rule__EntityFeature__IsGroupedAssignment_2_0_1_9_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getResultFiltersResultFiltersParserRuleCall_2_0_1_10_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_0_1_9_0_0()); }
+		(
+			{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_0_1_9_0_0()); }
+			'group'
+			{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_0_1_9_0_0()); }
+		)
+		{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_0_1_9_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__GroupNameAssignment_2_0_1_9_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_0_1_9_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_0_1_9_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__PropertiesAssignment_2_0_1_10_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_10_2_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_10_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__PropertiesAssignment_2_0_1_10_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_10_3_1_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_10_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__ResultFiltersAssignment_2_0_1_11
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getResultFiltersResultFiltersParserRuleCall_2_0_1_11_0()); }
 		ruleResultFilters
-		{ after(grammarAccess.getEntityFeatureAccess().getResultFiltersResultFiltersParserRuleCall_2_0_1_10_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getResultFiltersResultFiltersParserRuleCall_2_0_1_11_0()); }
 	)
 ;
 finally {
@@ -37435,30 +38170,64 @@
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_2
+rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_4_0_0()); }
+		(
+			{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_4_0_0()); }
+			'group'
+			{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_4_0_0()); }
+		)
+		{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_4_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_3_1
+rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_0_4_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_0_4_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_2_0()); }
 		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_3_1_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_3_1_0()); }
 	)
 ;
 finally {
@@ -37537,45 +38306,79 @@
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_2
+rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_4_2_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_4_2_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_4_0_0()); }
+		(
+			{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_4_0_0()); }
+			'group'
+			{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_4_0_0()); }
+		)
+		{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_4_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_3_1
+rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_4_3_1_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_4_3_1_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_1_4_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_1_4_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_5
+rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionXBlockExpressionParserRuleCall_2_1_1_1_5_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_2_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_3_1_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionXBlockExpressionParserRuleCall_2_1_1_1_6_0()); }
 		ruleXBlockExpression
-		{ after(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionXBlockExpressionParserRuleCall_2_1_1_1_5_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionXBlockExpressionParserRuleCall_2_1_1_1_6_0()); }
 	)
 ;
 finally {
@@ -37923,30 +38726,64 @@
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_1_1_2_12_2
+rule__EntityFeature__IsGroupedAssignment_2_1_1_2_12_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_12_2_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_12_2_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_2_12_0_0()); }
+		(
+			{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_2_12_0_0()); }
+			'group'
+			{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_2_12_0_0()); }
+		)
+		{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_2_12_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_1_1_2_12_3_1
+rule__EntityFeature__GroupNameAssignment_2_1_1_2_12_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_12_3_1_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_2_12_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_2_12_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__PropertiesAssignment_2_1_1_2_13_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_13_2_0()); }
 		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_12_3_1_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_13_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__PropertiesAssignment_2_1_1_2_13_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_13_3_1_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_13_3_1_0()); }
 	)
 ;
 finally {
@@ -38209,45 +39046,117 @@
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__PropertiesAssignment_2_0_1_7_2
+rule__BeanFeature__AsGridAssignment_2_0_1_6_2_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_7_2_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_7_2_0()); }
+		{ before(grammarAccess.getBeanFeatureAccess().getAsGridAsGridKeyword_2_0_1_6_2_0_0()); }
+		(
+			{ before(grammarAccess.getBeanFeatureAccess().getAsGridAsGridKeyword_2_0_1_6_2_0_0()); }
+			'asGrid'
+			{ after(grammarAccess.getBeanFeatureAccess().getAsGridAsGridKeyword_2_0_1_6_2_0_0()); }
+		)
+		{ after(grammarAccess.getBeanFeatureAccess().getAsGridAsGridKeyword_2_0_1_6_2_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__PropertiesAssignment_2_0_1_7_3_1
+rule__BeanFeature__AsTableAssignment_2_0_1_6_2_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_7_3_1_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_7_3_1_0()); }
+		{ before(grammarAccess.getBeanFeatureAccess().getAsTableAsTableKeyword_2_0_1_6_2_1_0()); }
+		(
+			{ before(grammarAccess.getBeanFeatureAccess().getAsTableAsTableKeyword_2_0_1_6_2_1_0()); }
+			'asTable'
+			{ after(grammarAccess.getBeanFeatureAccess().getAsTableAsTableKeyword_2_0_1_6_2_1_0()); }
+		)
+		{ after(grammarAccess.getBeanFeatureAccess().getAsTableAsTableKeyword_2_0_1_6_2_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__ResultFiltersAssignment_2_0_1_8
+rule__BeanFeature__IsGroupedAssignment_2_0_1_7_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getBeanFeatureAccess().getResultFiltersResultFiltersParserRuleCall_2_0_1_8_0()); }
+		{ before(grammarAccess.getBeanFeatureAccess().getIsGroupedGroupKeyword_2_0_1_7_0_0()); }
+		(
+			{ before(grammarAccess.getBeanFeatureAccess().getIsGroupedGroupKeyword_2_0_1_7_0_0()); }
+			'group'
+			{ after(grammarAccess.getBeanFeatureAccess().getIsGroupedGroupKeyword_2_0_1_7_0_0()); }
+		)
+		{ after(grammarAccess.getBeanFeatureAccess().getIsGroupedGroupKeyword_2_0_1_7_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__GroupNameAssignment_2_0_1_7_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getBeanFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_0_1_7_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getBeanFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_0_1_7_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__PropertiesAssignment_2_0_1_8_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_8_2_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_8_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__PropertiesAssignment_2_0_1_8_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_8_3_1_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_8_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__ResultFiltersAssignment_2_0_1_9
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getBeanFeatureAccess().getResultFiltersResultFiltersParserRuleCall_2_0_1_9_0()); }
 		ruleResultFilters
-		{ after(grammarAccess.getBeanFeatureAccess().getResultFiltersResultFiltersParserRuleCall_2_0_1_8_0()); }
+		{ after(grammarAccess.getBeanFeatureAccess().getResultFiltersResultFiltersParserRuleCall_2_0_1_9_0()); }
 	)
 ;
 finally {
@@ -38322,30 +39231,64 @@
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__PropertiesAssignment_2_1_1_0_4_2
+rule__BeanFeature__IsGroupedAssignment_2_1_1_0_4_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0()); }
+		{ before(grammarAccess.getBeanFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_4_0_0()); }
+		(
+			{ before(grammarAccess.getBeanFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_4_0_0()); }
+			'group'
+			{ after(grammarAccess.getBeanFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_4_0_0()); }
+		)
+		{ after(grammarAccess.getBeanFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_4_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__PropertiesAssignment_2_1_1_0_4_3_1
+rule__BeanFeature__GroupNameAssignment_2_1_1_0_4_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0()); }
+		{ before(grammarAccess.getBeanFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_0_4_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getBeanFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_0_4_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__PropertiesAssignment_2_1_1_0_5_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_2_0()); }
 		ruleKeyAndValue
-		{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0()); }
+		{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__PropertiesAssignment_2_1_1_0_5_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_3_1_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_3_1_0()); }
 	)
 ;
 finally {
@@ -38492,30 +39435,64 @@
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__PropertiesAssignment_2_1_1_1_6_2
+rule__BeanFeature__IsGroupedAssignment_2_1_1_1_6_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_6_2_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_6_2_0()); }
+		{ before(grammarAccess.getBeanFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_6_0_0()); }
+		(
+			{ before(grammarAccess.getBeanFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_6_0_0()); }
+			'group'
+			{ after(grammarAccess.getBeanFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_6_0_0()); }
+		)
+		{ after(grammarAccess.getBeanFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_6_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__BeanFeature__PropertiesAssignment_2_1_1_1_6_3_1
+rule__BeanFeature__GroupNameAssignment_2_1_1_1_6_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_6_3_1_0()); }
+		{ before(grammarAccess.getBeanFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_1_6_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getBeanFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_1_6_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__PropertiesAssignment_2_1_1_1_7_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_7_2_0()); }
 		ruleKeyAndValue
-		{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_6_3_1_0()); }
+		{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_7_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__PropertiesAssignment_2_1_1_1_7_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_7_3_1_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_7_3_1_0()); }
 	)
 ;
 finally {
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.tokens b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.tokens
index cd6cad4..2ceb8ea 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.tokens
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.tokens
@@ -27,7 +27,7 @@
 '0'=84
 '1'=86
 ':'=141
-'::'=176
+'::'=179
 ';'=133
 '<'=46
 '<='=83
@@ -39,7 +39,7 @@
 '>'=45
 '>='=44
 '?'=85
-'?.'=177
+'?.'=180
 '?:'=52
 '@'=134
 'CHAR'=70
@@ -52,11 +52,13 @@
 ']'=100
 'abstract'=157
 'as'=137
-'asBlob'=172
-'asDefault'=173
-'asKanbanOrdering'=168
-'asKanbanState'=167
-'asPrimitive'=170
+'asBlob'=175
+'asDefault'=176
+'asGrid'=163
+'asKanbanOrdering'=171
+'asKanbanState'=170
+'asPrimitive'=173
+'asTable'=164
 'bean'=93
 'cachable'=17
 'cacheable'=160
@@ -66,8 +68,8 @@
 'collection'=23
 'datatype'=111
 'date'=29
-'dateType'=171
-'decentOrder'=169
+'dateType'=174
+'decentOrder'=172
 'def'=103
 'default'=142
 'derived'=22
@@ -76,8 +78,8 @@
 'discriminatorType'=108
 'discriminatorValue'=109
 'do'=146
-'domainDescription'=163
-'domainKey'=164
+'domainDescription'=166
+'domainKey'=167
 'dto'=28
 'else'=139
 'entity'=87
@@ -90,7 +92,8 @@
 'filterDepth'=98
 'finally'=153
 'for'=144
-'forNull'=174
+'forNull'=177
+'group'=165
 'historized'=158
 'id'=18
 'if'=138
@@ -120,9 +123,9 @@
 'msgI18nKey'=115
 'new'=147
 'notnull'=27
-'ns'=175
+'ns'=178
 'null'=148
-'onKanbanCard'=166
+'onKanbanCard'=169
 'opposite'=101
 'package'=79
 'persistenceUnit'=92
@@ -130,7 +133,7 @@
 'properties'=102
 'protected'=81
 'public'=82
-'range'=165
+'range'=168
 'ref'=31
 'refers'=24
 'regex'=127
@@ -150,7 +153,7 @@
 'timedependent'=159
 'timestamp'=78
 'transient'=20
-'true'=179
+'true'=182
 'try'=152
 'typeof'=149
 'unique'=162
@@ -162,7 +165,7 @@
 'warn'=75
 'while'=145
 '{'=88
-'|'=178
+'|'=181
 '||'=14
 '}'=89
 RULE_ANY_OTHER=12
@@ -259,6 +262,9 @@
 T__178=178
 T__179=179
 T__17=17
+T__180=180
+T__181=181
+T__182=182
 T__18=18
 T__19=19
 T__20=20
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarLexer.java b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarLexer.java
index 1ea8bf2..54ad8cf 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarLexer.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarLexer.java
@@ -1,3 +1,18 @@
+/**
+ * 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 2.0 
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ *
+ * generated by Xtext 2.11.0
+
+ */
 package org.eclipse.osbp.dsl.entity.xtext.ide.contentassist.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
@@ -108,6 +123,9 @@
     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__180=180;
+    public static final int T__182=182;
+    public static final int T__181=181;
     public static final int T__19=19;
     public static final int T__15=15;
     public static final int T__16=16;
@@ -3333,10 +3351,10 @@
         try {
             int _type = T__163;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:161:8: ( 'domainDescription' )
-            // InternalEntityGrammar.g:161:10: 'domainDescription'
+            // InternalEntityGrammar.g:161:8: ( 'asGrid' )
+            // InternalEntityGrammar.g:161:10: 'asGrid'
             {
-            match("domainDescription"); 
+            match("asGrid"); 
 
 
             }
@@ -3354,10 +3372,10 @@
         try {
             int _type = T__164;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:162:8: ( 'domainKey' )
-            // InternalEntityGrammar.g:162:10: 'domainKey'
+            // InternalEntityGrammar.g:162:8: ( 'asTable' )
+            // InternalEntityGrammar.g:162:10: 'asTable'
             {
-            match("domainKey"); 
+            match("asTable"); 
 
 
             }
@@ -3375,10 +3393,10 @@
         try {
             int _type = T__165;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:163:8: ( 'range' )
-            // InternalEntityGrammar.g:163:10: 'range'
+            // InternalEntityGrammar.g:163:8: ( 'group' )
+            // InternalEntityGrammar.g:163:10: 'group'
             {
-            match("range"); 
+            match("group"); 
 
 
             }
@@ -3396,10 +3414,10 @@
         try {
             int _type = T__166;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:164:8: ( 'onKanbanCard' )
-            // InternalEntityGrammar.g:164:10: 'onKanbanCard'
+            // InternalEntityGrammar.g:164:8: ( 'domainDescription' )
+            // InternalEntityGrammar.g:164:10: 'domainDescription'
             {
-            match("onKanbanCard"); 
+            match("domainDescription"); 
 
 
             }
@@ -3417,10 +3435,10 @@
         try {
             int _type = T__167;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:165:8: ( 'asKanbanState' )
-            // InternalEntityGrammar.g:165:10: 'asKanbanState'
+            // InternalEntityGrammar.g:165:8: ( 'domainKey' )
+            // InternalEntityGrammar.g:165:10: 'domainKey'
             {
-            match("asKanbanState"); 
+            match("domainKey"); 
 
 
             }
@@ -3438,10 +3456,10 @@
         try {
             int _type = T__168;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:166:8: ( 'asKanbanOrdering' )
-            // InternalEntityGrammar.g:166:10: 'asKanbanOrdering'
+            // InternalEntityGrammar.g:166:8: ( 'range' )
+            // InternalEntityGrammar.g:166:10: 'range'
             {
-            match("asKanbanOrdering"); 
+            match("range"); 
 
 
             }
@@ -3459,10 +3477,10 @@
         try {
             int _type = T__169;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:167:8: ( 'decentOrder' )
-            // InternalEntityGrammar.g:167:10: 'decentOrder'
+            // InternalEntityGrammar.g:167:8: ( 'onKanbanCard' )
+            // InternalEntityGrammar.g:167:10: 'onKanbanCard'
             {
-            match("decentOrder"); 
+            match("onKanbanCard"); 
 
 
             }
@@ -3480,10 +3498,10 @@
         try {
             int _type = T__170;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:168:8: ( 'asPrimitive' )
-            // InternalEntityGrammar.g:168:10: 'asPrimitive'
+            // InternalEntityGrammar.g:168:8: ( 'asKanbanState' )
+            // InternalEntityGrammar.g:168:10: 'asKanbanState'
             {
-            match("asPrimitive"); 
+            match("asKanbanState"); 
 
 
             }
@@ -3501,10 +3519,10 @@
         try {
             int _type = T__171;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:169:8: ( 'dateType' )
-            // InternalEntityGrammar.g:169:10: 'dateType'
+            // InternalEntityGrammar.g:169:8: ( 'asKanbanOrdering' )
+            // InternalEntityGrammar.g:169:10: 'asKanbanOrdering'
             {
-            match("dateType"); 
+            match("asKanbanOrdering"); 
 
 
             }
@@ -3522,10 +3540,10 @@
         try {
             int _type = T__172;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:170:8: ( 'asBlob' )
-            // InternalEntityGrammar.g:170:10: 'asBlob'
+            // InternalEntityGrammar.g:170:8: ( 'decentOrder' )
+            // InternalEntityGrammar.g:170:10: 'decentOrder'
             {
-            match("asBlob"); 
+            match("decentOrder"); 
 
 
             }
@@ -3543,10 +3561,10 @@
         try {
             int _type = T__173;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:171:8: ( 'asDefault' )
-            // InternalEntityGrammar.g:171:10: 'asDefault'
+            // InternalEntityGrammar.g:171:8: ( 'asPrimitive' )
+            // InternalEntityGrammar.g:171:10: 'asPrimitive'
             {
-            match("asDefault"); 
+            match("asPrimitive"); 
 
 
             }
@@ -3564,10 +3582,10 @@
         try {
             int _type = T__174;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:172:8: ( 'forNull' )
-            // InternalEntityGrammar.g:172:10: 'forNull'
+            // InternalEntityGrammar.g:172:8: ( 'dateType' )
+            // InternalEntityGrammar.g:172:10: 'dateType'
             {
-            match("forNull"); 
+            match("dateType"); 
 
 
             }
@@ -3585,10 +3603,10 @@
         try {
             int _type = T__175;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:173:8: ( 'ns' )
-            // InternalEntityGrammar.g:173:10: 'ns'
+            // InternalEntityGrammar.g:173:8: ( 'asBlob' )
+            // InternalEntityGrammar.g:173:10: 'asBlob'
             {
-            match("ns"); 
+            match("asBlob"); 
 
 
             }
@@ -3606,10 +3624,10 @@
         try {
             int _type = T__176;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:174:8: ( '::' )
-            // InternalEntityGrammar.g:174:10: '::'
+            // InternalEntityGrammar.g:174:8: ( 'asDefault' )
+            // InternalEntityGrammar.g:174:10: 'asDefault'
             {
-            match("::"); 
+            match("asDefault"); 
 
 
             }
@@ -3627,10 +3645,10 @@
         try {
             int _type = T__177;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:175:8: ( '?.' )
-            // InternalEntityGrammar.g:175:10: '?.'
+            // InternalEntityGrammar.g:175:8: ( 'forNull' )
+            // InternalEntityGrammar.g:175:10: 'forNull'
             {
-            match("?."); 
+            match("forNull"); 
 
 
             }
@@ -3648,10 +3666,11 @@
         try {
             int _type = T__178;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:176:8: ( '|' )
-            // InternalEntityGrammar.g:176:10: '|'
+            // InternalEntityGrammar.g:176:8: ( 'ns' )
+            // InternalEntityGrammar.g:176:10: 'ns'
             {
-            match('|'); 
+            match("ns"); 
+
 
             }
 
@@ -3668,10 +3687,10 @@
         try {
             int _type = T__179;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:177:8: ( 'true' )
-            // InternalEntityGrammar.g:177:10: 'true'
+            // InternalEntityGrammar.g:177:8: ( '::' )
+            // InternalEntityGrammar.g:177:10: '::'
             {
-            match("true"); 
+            match("::"); 
 
 
             }
@@ -3684,15 +3703,77 @@
     }
     // $ANTLR end "T__179"
 
+    // $ANTLR start "T__180"
+    public final void mT__180() throws RecognitionException {
+        try {
+            int _type = T__180;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalEntityGrammar.g:178:8: ( '?.' )
+            // InternalEntityGrammar.g:178:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__180"
+
+    // $ANTLR start "T__181"
+    public final void mT__181() throws RecognitionException {
+        try {
+            int _type = T__181;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalEntityGrammar.g:179:8: ( '|' )
+            // InternalEntityGrammar.g:179:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__181"
+
+    // $ANTLR start "T__182"
+    public final void mT__182() throws RecognitionException {
+        try {
+            int _type = T__182;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalEntityGrammar.g:180:8: ( 'true' )
+            // InternalEntityGrammar.g:180:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__182"
+
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:42504:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // InternalEntityGrammar.g:42504:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalEntityGrammar.g:43481:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalEntityGrammar.g:43481:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // InternalEntityGrammar.g:42504:12: ( '0x' | '0X' )
+            // InternalEntityGrammar.g:43481:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -3720,7 +3801,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalEntityGrammar.g:42504:13: '0x'
+                    // InternalEntityGrammar.g:43481:13: '0x'
                     {
                     match("0x"); 
 
@@ -3728,7 +3809,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:42504:18: '0X'
+                    // InternalEntityGrammar.g:43481:18: '0X'
                     {
                     match("0X"); 
 
@@ -3738,7 +3819,7 @@
 
             }
 
-            // InternalEntityGrammar.g:42504:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalEntityGrammar.g:43481:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -3776,7 +3857,7 @@
                 cnt2++;
             } while (true);
 
-            // InternalEntityGrammar.g:42504:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalEntityGrammar.g:43481:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -3785,10 +3866,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // InternalEntityGrammar.g:42504:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalEntityGrammar.g:43481:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // InternalEntityGrammar.g:42504:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalEntityGrammar.g:43481:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -3806,7 +3887,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // InternalEntityGrammar.g:42504:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalEntityGrammar.g:43481:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -3830,7 +3911,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalEntityGrammar.g:42504:84: ( 'l' | 'L' )
+                            // InternalEntityGrammar.g:43481:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -3869,11 +3950,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:42506:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // InternalEntityGrammar.g:42506:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalEntityGrammar.g:43483:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalEntityGrammar.g:43483:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // InternalEntityGrammar.g:42506:21: ( '0' .. '9' | '_' )*
+            // InternalEntityGrammar.g:43483:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -3922,11 +4003,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:42508:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // InternalEntityGrammar.g:42508:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalEntityGrammar.g:43485:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalEntityGrammar.g:43485:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // InternalEntityGrammar.g:42508:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalEntityGrammar.g:43485:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -3935,7 +4016,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalEntityGrammar.g:42508:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalEntityGrammar.g:43485:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -3946,7 +4027,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // InternalEntityGrammar.g:42508:36: ( '+' | '-' )?
+                    // InternalEntityGrammar.g:43485:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -3979,7 +4060,7 @@
 
             }
 
-            // InternalEntityGrammar.g:42508:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalEntityGrammar.g:43485:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -3991,7 +4072,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // InternalEntityGrammar.g:42508:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalEntityGrammar.g:43485:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -4015,7 +4096,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:42508:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalEntityGrammar.g:43485: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();
@@ -4048,10 +4129,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:42510:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // InternalEntityGrammar.g:42510:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalEntityGrammar.g:43487:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalEntityGrammar.g:43487:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // InternalEntityGrammar.g:42510:11: ( '^' )?
+            // InternalEntityGrammar.g:43487:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -4060,7 +4141,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // InternalEntityGrammar.g:42510:11: '^'
+                    // InternalEntityGrammar.g:43487:11: '^'
                     {
                     match('^'); 
 
@@ -4078,7 +4159,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalEntityGrammar.g:42510:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalEntityGrammar.g:43487:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -4127,10 +4208,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:42512:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // InternalEntityGrammar.g:42512:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalEntityGrammar.g:43489:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalEntityGrammar.g:43489:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // InternalEntityGrammar.g:42512:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalEntityGrammar.g:43489:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -4148,10 +4229,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // InternalEntityGrammar.g:42512:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalEntityGrammar.g:43489:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // InternalEntityGrammar.g:42512:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalEntityGrammar.g:43489:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -4167,7 +4248,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // InternalEntityGrammar.g:42512:21: '\\\\' .
+                    	    // InternalEntityGrammar.g:43489:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -4175,7 +4256,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalEntityGrammar.g:42512:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalEntityGrammar.g:43489:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -4195,7 +4276,7 @@
                         }
                     } while (true);
 
-                    // InternalEntityGrammar.g:42512:44: ( '\"' )?
+                    // InternalEntityGrammar.g:43489:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -4204,7 +4285,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalEntityGrammar.g:42512:44: '\"'
+                            // InternalEntityGrammar.g:43489:44: '\"'
                             {
                             match('\"'); 
 
@@ -4217,10 +4298,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:42512:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalEntityGrammar.g:43489:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // InternalEntityGrammar.g:42512:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalEntityGrammar.g:43489:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -4236,7 +4317,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // InternalEntityGrammar.g:42512:55: '\\\\' .
+                    	    // InternalEntityGrammar.g:43489:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -4244,7 +4325,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalEntityGrammar.g:42512:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalEntityGrammar.g:43489:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -4264,7 +4345,7 @@
                         }
                     } while (true);
 
-                    // InternalEntityGrammar.g:42512:79: ( '\\'' )?
+                    // InternalEntityGrammar.g:43489:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -4273,7 +4354,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // InternalEntityGrammar.g:42512:79: '\\''
+                            // InternalEntityGrammar.g:43489:79: '\\''
                             {
                             match('\''); 
 
@@ -4304,12 +4385,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:42514:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalEntityGrammar.g:42514:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalEntityGrammar.g:43491:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalEntityGrammar.g:43491:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalEntityGrammar.g:42514:24: ( options {greedy=false; } : . )*
+            // InternalEntityGrammar.g:43491:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -4334,7 +4415,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalEntityGrammar.g:42514:52: .
+            	    // InternalEntityGrammar.g:43491:52: .
             	    {
             	    matchAny(); 
 
@@ -4364,12 +4445,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:42516:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalEntityGrammar.g:42516:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalEntityGrammar.g:43493:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalEntityGrammar.g:43493:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalEntityGrammar.g:42516:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalEntityGrammar.g:43493:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -4382,7 +4463,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalEntityGrammar.g:42516:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalEntityGrammar.g:43493: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();
@@ -4402,7 +4483,7 @@
                 }
             } while (true);
 
-            // InternalEntityGrammar.g:42516:40: ( ( '\\r' )? '\\n' )?
+            // InternalEntityGrammar.g:43493:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -4411,9 +4492,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalEntityGrammar.g:42516:41: ( '\\r' )? '\\n'
+                    // InternalEntityGrammar.g:43493:41: ( '\\r' )? '\\n'
                     {
-                    // InternalEntityGrammar.g:42516:41: ( '\\r' )?
+                    // InternalEntityGrammar.g:43493:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -4422,7 +4503,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalEntityGrammar.g:42516:41: '\\r'
+                            // InternalEntityGrammar.g:43493:41: '\\r'
                             {
                             match('\r'); 
 
@@ -4454,10 +4535,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:42518:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalEntityGrammar.g:42518:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalEntityGrammar.g:43495:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalEntityGrammar.g:43495:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalEntityGrammar.g:42518:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalEntityGrammar.g:43495:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -4511,8 +4592,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:42520:16: ( . )
-            // InternalEntityGrammar.g:42520:18: .
+            // InternalEntityGrammar.g:43497:16: ( . )
+            // InternalEntityGrammar.g:43497:18: .
             {
             matchAny(); 
 
@@ -4527,8 +4608,8 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // 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 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=176;
+        // 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 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | T__180 | T__181 | T__182 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=179;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
@@ -5701,63 +5782,84 @@
                 }
                 break;
             case 168 :
-                // InternalEntityGrammar.g:1:1092: RULE_HEX
+                // InternalEntityGrammar.g:1:1092: T__180
+                {
+                mT__180(); 
+
+                }
+                break;
+            case 169 :
+                // InternalEntityGrammar.g:1:1099: T__181
+                {
+                mT__181(); 
+
+                }
+                break;
+            case 170 :
+                // InternalEntityGrammar.g:1:1106: T__182
+                {
+                mT__182(); 
+
+                }
+                break;
+            case 171 :
+                // InternalEntityGrammar.g:1:1113: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 169 :
-                // InternalEntityGrammar.g:1:1101: RULE_INT
+            case 172 :
+                // InternalEntityGrammar.g:1:1122: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 170 :
-                // InternalEntityGrammar.g:1:1110: RULE_DECIMAL
+            case 173 :
+                // InternalEntityGrammar.g:1:1131: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 171 :
-                // InternalEntityGrammar.g:1:1123: RULE_ID
+            case 174 :
+                // InternalEntityGrammar.g:1:1144: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 172 :
-                // InternalEntityGrammar.g:1:1131: RULE_STRING
+            case 175 :
+                // InternalEntityGrammar.g:1:1152: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 173 :
-                // InternalEntityGrammar.g:1:1143: RULE_ML_COMMENT
+            case 176 :
+                // InternalEntityGrammar.g:1:1164: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 174 :
-                // InternalEntityGrammar.g:1:1159: RULE_SL_COMMENT
+            case 177 :
+                // InternalEntityGrammar.g:1:1180: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 175 :
-                // InternalEntityGrammar.g:1:1175: RULE_WS
+            case 178 :
+                // InternalEntityGrammar.g:1:1196: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 176 :
-                // InternalEntityGrammar.g:1:1183: RULE_ANY_OTHER
+            case 179 :
+                // InternalEntityGrammar.g:1:1204: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -5771,112 +5873,111 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\76\1\100\1\102\13\105\1\153\1\157\1\162\1\166\1\170\1\172\1\174\1\177\1\u0081\1\u0084\11\105\1\u0099\1\u009b\4\uffff\1\105\3\uffff\3\105\3\uffff\1\105\1\u00ae\1\105\1\u00b0\1\73\5\uffff\1\u00b4\6\uffff\2\105\1\uffff\2\105\1\u00bc\3\105\1\u00c6\13\105\1\u00d8\14\105\1\u00e8\3\105\20\uffff\1\u00ee\6\uffff\1\u00f0\4\uffff\22\105\1\uffff\1\u00b0\7\uffff\1\105\3\uffff\4\105\3\uffff\1\u0110\1\105\2\uffff\1\105\5\uffff\1\u0113\1\u0115\5\105\1\uffff\11\105\1\uffff\3\105\1\u012a\6\105\1\u0132\1\105\1\u0134\4\105\1\uffff\1\u013b\14\105\1\u0148\1\105\1\uffff\4\105\4\uffff\10\105\1\u015c\1\105\1\u015e\17\105\1\u016f\4\105\1\uffff\2\105\1\uffff\1\105\1\uffff\3\105\1\u017b\3\105\1\u017f\11\105\1\u0189\2\105\1\uffff\1\u018c\1\u018f\5\105\1\uffff\1\105\1\uffff\1\u0197\5\105\1\uffff\12\105\1\u01a8\1\105\1\uffff\1\u01aa\14\105\1\u01b7\1\u01b8\4\105\1\uffff\1\105\1\uffff\1\105\1\u01bf\1\u01c0\1\105\1\u01c2\7\105\1\u01ca\3\105\1\uffff\6\105\1\u01d4\4\105\1\uffff\1\u01d9\2\105\1\uffff\1\u01dc\10\105\1\uffff\2\105\1\uffff\2\105\1\uffff\2\105\1\u01eb\4\105\1\uffff\5\105\1\u01f5\1\105\1\u01f7\4\105\1\u01fd\3\105\1\uffff\1\105\1\uffff\1\u0202\11\105\1\u020d\1\105\2\uffff\1\u020f\5\105\2\uffff\1\105\1\uffff\1\u0216\6\105\1\uffff\11\105\1\uffff\4\105\1\uffff\1\105\1\u022b\1\uffff\4\105\1\u0230\1\u0231\1\105\1\u0233\1\u0234\4\105\1\u0239\1\uffff\6\105\1\u0240\1\105\1\u0243\1\uffff\1\u0244\1\uffff\2\105\1\u0247\1\u0248\1\105\1\uffff\1\105\1\u024b\2\105\1\uffff\12\105\1\uffff\1\u0258\1\uffff\1\u025a\3\105\1\u025e\1\105\1\uffff\4\105\1\u0264\6\105\1\u026b\3\105\1\u026f\2\105\1\u0272\1\105\1\uffff\2\105\1\u0276\1\105\2\uffff\1\105\2\uffff\4\105\1\uffff\1\u027d\1\u027e\4\105\1\uffff\2\105\2\uffff\2\105\2\uffff\2\105\1\uffff\1\105\1\u028a\3\105\1\u028e\4\105\1\u0293\1\105\1\uffff\1\105\1\uffff\1\u0296\1\u0297\1\u0298\1\uffff\1\105\1\u029a\1\u029b\2\105\1\uffff\3\105\1\u02a1\2\105\1\uffff\3\105\1\uffff\1\u02a7\1\105\1\uffff\3\105\1\uffff\1\u02ac\5\105\2\uffff\1\105\1\u02b3\1\u02b4\3\105\1\u02b8\1\u02b9\3\105\1\uffff\3\105\1\uffff\4\105\1\uffff\2\105\3\uffff\1\105\2\uffff\3\105\1\u02ca\1\105\1\uffff\3\105\1\u02d0\1\105\1\uffff\1\u02d2\3\105\1\uffff\1\u02d6\1\u02d7\1\u02d8\1\105\1\u02da\1\105\2\uffff\2\105\1\u02de\2\uffff\5\105\1\u02e4\2\105\1\u02e7\1\105\1\u02e9\1\105\1\u02eb\1\u02ec\2\105\1\uffff\4\105\1\u02f3\1\uffff\1\105\1\uffff\1\u02f5\1\105\1\u02f7\3\uffff\1\105\1\uffff\3\105\1\uffff\1\u02fc\1\u02fd\2\105\1\u0300\1\uffff\1\u0301\1\u0302\1\uffff\1\u0303\1\uffff\1\105\2\uffff\1\u0305\5\105\1\uffff\1\u030b\1\uffff\1\105\1\uffff\1\105\1\u030e\2\105\2\uffff\2\105\4\uffff\1\u0313\1\uffff\4\105\1\u0318\1\uffff\2\105\1\uffff\2\105\1\u031d\1\105\1\uffff\1\105\1\u0320\2\105\1\uffff\1\105\1\u0324\2\105\1\uffff\2\105\1\uffff\1\u032b\2\105\1\uffff\6\105\1\uffff\10\105\1\u033d\7\105\1\u0345\1\uffff\1\u0346\3\105\1\u034a\1\105\1\u034c\2\uffff\3\105\1\uffff\1\u0350\1\uffff\1\u0351\1\105\1\u0353\2\uffff\1\105\1\uffff\1\105\1\u0356\1\uffff";
+        "\1\uffff\1\77\1\101\1\103\13\106\1\154\1\160\1\163\1\167\1\171\1\173\1\175\1\u0080\1\u0082\1\u0085\11\106\1\u0099\1\u009c\4\uffff\1\106\3\uffff\3\106\3\uffff\1\106\1\u00af\2\106\1\u00b2\1\74\5\uffff\1\u00b6\6\uffff\2\106\1\uffff\2\106\1\u00be\3\106\1\u00c8\13\106\1\u00da\14\106\1\u00ea\3\106\20\uffff\1\u00f0\6\uffff\1\u00f2\4\uffff\22\106\2\uffff\1\u00b2\6\uffff\1\106\3\uffff\4\106\3\uffff\1\u0114\1\106\2\uffff\2\106\5\uffff\1\u0118\1\u011a\5\106\1\uffff\11\106\1\uffff\3\106\1\u012f\6\106\1\u0137\1\106\1\u0139\4\106\1\uffff\1\u0140\14\106\1\u014d\1\106\1\uffff\4\106\4\uffff\10\106\1\u0161\1\106\1\u0163\17\106\1\u0174\6\106\1\uffff\3\106\1\uffff\1\106\1\uffff\3\106\1\u0183\3\106\1\u0187\11\106\1\u0191\2\106\1\uffff\1\u0194\1\u0197\5\106\1\uffff\1\106\1\uffff\1\u019f\5\106\1\uffff\12\106\1\u01b0\1\106\1\uffff\1\u01b2\14\106\1\u01bf\1\u01c0\4\106\1\uffff\1\106\1\uffff\1\106\1\u01c7\1\u01c8\1\106\1\u01ca\7\106\1\u01d2\3\106\1\uffff\11\106\1\u01df\4\106\1\uffff\1\u01e4\2\106\1\uffff\1\u01e7\10\106\1\uffff\2\106\1\uffff\2\106\1\uffff\2\106\1\u01f6\4\106\1\uffff\5\106\1\u0200\1\106\1\u0202\4\106\1\u0208\3\106\1\uffff\1\106\1\uffff\1\u020d\11\106\1\u0218\1\106\2\uffff\1\u021a\5\106\2\uffff\1\106\1\uffff\1\u0221\6\106\1\uffff\13\106\1\u0233\1\uffff\4\106\1\uffff\1\106\1\u0239\1\uffff\4\106\1\u023e\1\u023f\1\106\1\u0241\1\u0242\4\106\1\u0247\1\uffff\6\106\1\u024e\1\106\1\u0251\1\uffff\1\u0252\1\uffff\2\106\1\u0255\1\u0256\1\106\1\uffff\1\106\1\u0259\2\106\1\uffff\12\106\1\uffff\1\u0266\1\uffff\1\u0268\3\106\1\u026c\1\106\1\uffff\4\106\1\u0272\4\106\1\u0277\3\106\1\u027b\3\106\1\uffff\1\u027f\2\106\1\u0282\1\106\1\uffff\2\106\1\u0286\1\106\2\uffff\1\106\2\uffff\4\106\1\uffff\1\u028d\1\u028e\4\106\1\uffff\2\106\2\uffff\2\106\2\uffff\2\106\1\uffff\1\106\1\u029a\3\106\1\u029e\4\106\1\u02a3\1\106\1\uffff\1\106\1\uffff\1\u02a6\1\u02a7\1\u02a8\1\uffff\1\106\1\u02aa\1\u02ab\2\106\1\uffff\3\106\1\u02b1\1\uffff\1\u02b2\2\106\1\uffff\3\106\1\uffff\1\u02b8\1\106\1\uffff\3\106\1\uffff\1\u02bd\5\106\2\uffff\1\106\1\u02c4\1\u02c5\3\106\1\u02c9\1\u02ca\3\106\1\uffff\3\106\1\uffff\4\106\1\uffff\2\106\3\uffff\1\106\2\uffff\3\106\1\u02db\1\106\2\uffff\3\106\1\u02e1\1\106\1\uffff\1\u02e3\3\106\1\uffff\1\u02e7\1\u02e8\1\u02e9\1\106\1\u02eb\1\106\2\uffff\2\106\1\u02ef\2\uffff\5\106\1\u02f5\2\106\1\u02f8\1\106\1\u02fa\1\106\1\u02fc\1\u02fd\2\106\1\uffff\4\106\1\u0304\1\uffff\1\106\1\uffff\1\u0306\1\106\1\u0308\3\uffff\1\106\1\uffff\3\106\1\uffff\1\u030d\1\u030e\2\106\1\u0311\1\uffff\1\u0312\1\u0313\1\uffff\1\u0314\1\uffff\1\106\2\uffff\1\u0316\5\106\1\uffff\1\u031c\1\uffff\1\106\1\uffff\1\106\1\u031f\2\106\2\uffff\2\106\4\uffff\1\u0324\1\uffff\4\106\1\u0329\1\uffff\2\106\1\uffff\2\106\1\u032e\1\106\1\uffff\1\106\1\u0331\2\106\1\uffff\1\106\1\u0335\2\106\1\uffff\2\106\1\uffff\1\u033c\2\106\1\uffff\6\106\1\uffff\10\106\1\u034e\7\106\1\u0356\1\uffff\1\u0357\3\106\1\u035b\1\106\1\u035d\2\uffff\3\106\1\uffff\1\u0361\1\uffff\1\u0362\1\106\1\u0364\2\uffff\1\106\1\uffff\1\106\1\u0367\1\uffff";
     static final String DFA21_eofS =
-        "\u0357\uffff";
+        "\u0368\uffff";
     static final String DFA21_minS =
-        "\1\0\1\75\1\174\1\46\2\141\1\144\1\156\3\141\1\143\1\141\1\145\1\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\3\uffff\1\156\1\166\1\145\3\uffff\1\142\1\72\1\151\1\60\1\44\5\uffff\1\75\6\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\143\1\157\1\164\1\147\1\44\1\146\1\156\1\164\1\141\1\160\1\150\1\151\1\156\1\172\1\164\1\167\1\154\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\2\154\1\162\1\110\1\122\1\101\1\124\1\115\1\162\1\151\1\143\1\151\1\142\1\162\1\uffff\1\60\7\uffff\1\141\3\uffff\1\160\1\113\1\155\1\171\3\uffff\1\44\1\163\2\uffff\1\163\5\uffff\2\44\1\163\1\150\2\143\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\151\1\44\1\145\1\44\1\141\1\143\1\151\1\141\1\uffff\1\44\1\145\1\165\1\147\1\164\1\145\1\164\2\145\1\164\1\143\1\171\1\156\1\44\1\154\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\164\1\141\1\44\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\141\1\124\1\44\1\141\1\162\1\154\1\145\1\uffff\2\164\1\uffff\1\145\1\uffff\1\151\2\141\1\44\1\150\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\166\1\165\1\uffff\1\156\1\uffff\1\44\1\164\1\162\1\164\1\151\1\162\1\uffff\1\170\1\162\1\145\1\151\1\162\1\145\1\162\1\155\1\143\1\150\1\44\1\165\1\uffff\1\44\1\157\2\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\1\164\2\44\2\145\1\154\1\165\1\uffff\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\156\1\171\1\uffff\1\156\1\151\1\157\1\146\1\162\1\157\1\44\1\157\1\142\1\141\1\144\1\uffff\1\44\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\145\1\154\1\164\1\171\1\uffff\1\171\1\151\1\163\1\156\1\163\1\44\1\156\1\44\1\156\1\151\1\143\1\163\1\44\1\141\1\150\1\162\1\uffff\1\154\1\uffff\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\1\162\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\142\1\160\1\142\1\155\1\142\2\141\1\162\1\uffff\1\156\1\154\1\142\1\145\1\uffff\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\144\1\164\1\117\2\160\1\155\1\44\1\104\1\44\1\uffff\1\44\1\uffff\1\147\1\164\2\44\1\156\1\uffff\1\116\1\44\1\157\1\154\1\uffff\1\123\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\44\1\171\1\154\1\124\1\44\1\101\1\uffff\2\145\2\164\1\44\2\164\1\141\1\145\1\141\1\151\1\44\1\165\1\143\1\151\1\44\1\145\1\154\1\44\1\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\1\uffff\2\44\1\162\2\145\1\151\1\uffff\2\145\2\uffff\1\163\1\171\2\uffff\1\144\1\141\1\uffff\1\156\1\44\1\165\1\155\1\145\1\44\1\113\1\155\1\145\1\151\1\44\1\157\1\uffff\1\145\1\uffff\3\44\1\uffff\1\115\2\44\1\145\1\151\1\uffff\2\145\1\156\1\44\1\156\1\164\1\uffff\1\154\1\164\1\172\1\uffff\1\44\1\145\1\uffff\1\157\1\156\1\157\1\uffff\1\44\1\154\1\164\1\160\1\156\1\145\2\uffff\1\144\2\44\1\156\1\163\1\171\2\44\1\145\1\155\1\151\1\uffff\1\160\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\1\160\3\uffff\1\120\2\uffff\1\144\1\145\1\156\1\44\1\103\1\uffff\1\117\1\151\1\164\1\44\1\145\1\uffff\1\44\1\156\1\143\1\146\1\uffff\3\44\1\144\1\44\1\145\2\uffff\1\141\1\143\1\44\2\uffff\1\170\1\145\1\172\1\145\1\154\1\44\1\171\1\154\1\44\1\145\1\44\1\164\2\44\1\163\1\143\1\uffff\1\141\1\164\1\162\1\166\1\44\1\uffff\1\144\1\uffff\1\44\1\145\1\44\3\uffff\1\145\1\uffff\1\162\1\164\1\162\1\uffff\2\44\1\145\1\162\1\44\1\uffff\2\44\1\uffff\1\44\1\uffff\1\150\2\uffff\1\44\1\145\1\162\1\141\1\144\1\145\1\uffff\1\44\1\uffff\1\120\1\uffff\1\156\1\44\1\157\1\151\2\uffff\1\144\1\143\4\uffff\1\44\1\uffff\1\125\1\144\1\164\1\145\1\44\1\uffff\1\145\1\164\1\uffff\1\162\1\160\1\44\1\154\1\uffff\1\156\1\44\1\145\1\162\1\uffff\1\162\1\44\1\103\1\164\1\uffff\1\141\1\151\1\uffff\1\44\1\151\1\103\1\uffff\1\157\1\171\1\141\1\151\1\163\1\164\1\uffff\1\156\1\154\1\165\1\154\1\160\1\154\1\157\1\163\1\44\1\147\1\141\1\142\1\165\1\145\1\165\1\156\1\44\1\uffff\1\44\1\163\1\143\1\155\1\44\1\145\1\44\2\uffff\1\163\1\154\1\156\1\uffff\1\44\1\uffff\1\44\1\141\1\44\2\uffff\1\163\1\uffff\1\163\1\44\1\uffff";
+        "\1\0\1\75\1\174\1\46\2\141\1\144\1\156\3\141\1\143\1\141\1\145\1\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\3\uffff\1\156\1\166\1\145\3\uffff\1\142\1\72\1\151\1\162\1\60\1\44\5\uffff\1\75\6\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\143\1\157\1\164\1\147\1\44\1\146\1\156\1\164\1\141\1\160\1\150\1\151\1\156\1\172\1\164\1\167\1\154\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\2\154\1\162\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\3\uffff\1\160\1\113\1\155\1\171\3\uffff\1\44\1\163\2\uffff\1\163\1\157\5\uffff\2\44\1\163\1\150\2\143\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\151\1\44\1\145\1\44\1\141\1\143\1\151\1\141\1\uffff\1\44\1\145\1\165\1\147\1\164\1\145\1\164\2\145\1\164\1\143\1\171\1\156\1\44\1\154\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\164\1\141\1\44\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\141\1\124\1\44\1\162\2\141\1\162\1\154\1\145\1\uffff\2\164\1\165\1\uffff\1\145\1\uffff\1\151\2\141\1\44\1\150\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\166\1\165\1\uffff\1\156\1\uffff\1\44\1\164\1\162\1\164\1\151\1\162\1\uffff\1\170\1\162\1\145\1\151\1\162\1\145\1\162\1\155\1\143\1\150\1\44\1\165\1\uffff\1\44\1\157\2\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\1\164\2\44\2\145\1\154\1\165\1\uffff\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\156\1\171\1\uffff\1\151\1\142\1\156\1\151\1\157\1\146\1\162\1\157\1\160\1\44\1\157\1\142\1\141\1\144\1\uffff\1\44\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\145\1\154\1\164\1\171\1\uffff\1\171\1\151\1\163\1\156\1\163\1\44\1\156\1\44\1\156\1\151\1\143\1\163\1\44\1\141\1\150\1\162\1\uffff\1\154\1\uffff\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\1\162\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\142\1\160\1\144\1\154\1\142\1\155\1\142\2\141\1\162\1\44\1\uffff\1\156\1\154\1\142\1\145\1\uffff\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\144\1\164\1\117\2\160\1\155\1\44\1\104\1\44\1\uffff\1\44\1\uffff\1\147\1\164\2\44\1\156\1\uffff\1\116\1\44\1\157\1\154\1\uffff\1\123\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\44\1\171\1\154\1\124\1\44\1\101\1\uffff\2\145\2\164\1\44\2\164\1\141\1\145\1\44\1\145\1\141\1\151\1\44\1\165\1\143\1\151\1\uffff\1\44\1\145\1\154\1\44\1\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\1\uffff\2\44\1\162\2\145\1\151\1\uffff\2\145\2\uffff\1\163\1\171\2\uffff\1\144\1\141\1\uffff\1\156\1\44\1\165\1\155\1\145\1\44\1\113\1\155\1\145\1\151\1\44\1\157\1\uffff\1\145\1\uffff\3\44\1\uffff\1\115\2\44\1\145\1\151\1\uffff\2\145\1\156\1\44\1\uffff\1\44\1\156\1\164\1\uffff\1\154\1\164\1\172\1\uffff\1\44\1\145\1\uffff\1\157\1\156\1\157\1\uffff\1\44\1\154\1\164\1\160\1\156\1\145\2\uffff\1\144\2\44\1\156\1\163\1\171\2\44\1\145\1\155\1\151\1\uffff\1\160\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\1\160\3\uffff\1\120\2\uffff\1\144\1\145\1\156\1\44\1\103\2\uffff\1\117\1\151\1\164\1\44\1\145\1\uffff\1\44\1\156\1\143\1\146\1\uffff\3\44\1\144\1\44\1\145\2\uffff\1\141\1\143\1\44\2\uffff\1\170\1\145\1\172\1\145\1\154\1\44\1\171\1\154\1\44\1\145\1\44\1\164\2\44\1\163\1\143\1\uffff\1\141\1\164\1\162\1\166\1\44\1\uffff\1\144\1\uffff\1\44\1\145\1\44\3\uffff\1\145\1\uffff\1\162\1\164\1\162\1\uffff\2\44\1\145\1\162\1\44\1\uffff\2\44\1\uffff\1\44\1\uffff\1\150\2\uffff\1\44\1\145\1\162\1\141\1\144\1\145\1\uffff\1\44\1\uffff\1\120\1\uffff\1\156\1\44\1\157\1\151\2\uffff\1\144\1\143\4\uffff\1\44\1\uffff\1\125\1\144\1\164\1\145\1\44\1\uffff\1\145\1\164\1\uffff\1\162\1\160\1\44\1\154\1\uffff\1\156\1\44\1\145\1\162\1\uffff\1\162\1\44\1\103\1\164\1\uffff\1\141\1\151\1\uffff\1\44\1\151\1\103\1\uffff\1\157\1\171\1\141\1\151\1\163\1\164\1\uffff\1\156\1\154\1\165\1\154\1\160\1\154\1\157\1\163\1\44\1\147\1\141\1\142\1\165\1\145\1\165\1\156\1\44\1\uffff\1\44\1\163\1\143\1\155\1\44\1\145\1\44\2\uffff\1\163\1\154\1\156\1\uffff\1\44\1\uffff\1\44\1\141\1\44\2\uffff\1\163\1\uffff\1\163\1\44\1\uffff";
     static final String DFA21_maxS =
-        "\1\uffff\1\76\1\174\1\46\1\145\1\157\1\163\1\165\1\171\1\164\1\145\1\171\1\141\1\165\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\3\uffff\1\160\1\166\1\145\3\uffff\1\163\1\72\1\151\1\154\1\172\5\uffff\1\75\6\uffff\2\162\1\uffff\1\164\1\154\1\172\1\160\1\163\1\124\1\172\2\151\1\171\1\155\1\142\1\160\2\162\1\157\1\164\1\163\1\172\1\164\1\156\1\166\1\141\1\160\1\150\1\151\1\156\1\172\1\164\1\167\1\154\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\156\1\162\1\124\1\122\1\101\1\124\1\115\1\162\1\151\1\143\1\157\1\142\1\162\1\uffff\1\154\7\uffff\1\141\3\uffff\1\160\1\113\1\155\1\171\3\uffff\1\172\1\163\2\uffff\1\163\5\uffff\2\172\1\163\1\150\1\145\1\143\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\151\1\172\1\145\1\172\1\145\1\143\1\151\1\141\1\uffff\1\172\1\145\1\165\1\147\1\164\1\145\1\164\2\145\1\164\1\143\1\171\1\156\1\172\1\154\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\164\1\141\1\172\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\141\1\124\1\172\1\141\1\162\1\154\1\145\1\uffff\2\164\1\uffff\1\145\1\uffff\1\151\1\145\1\141\1\172\1\150\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\166\1\165\1\uffff\1\156\1\uffff\1\172\1\164\1\162\1\164\1\151\1\162\1\uffff\1\170\1\162\1\145\1\151\1\162\1\151\1\162\1\155\1\143\1\150\1\172\1\165\1\uffff\1\172\1\157\2\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\1\164\2\172\2\145\1\154\1\165\1\uffff\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\156\1\171\1\uffff\1\156\1\151\1\157\1\146\1\162\1\157\1\172\1\157\1\142\1\141\1\144\1\uffff\1\172\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\145\1\154\1\164\1\171\1\uffff\1\171\1\151\1\163\1\156\1\163\1\172\1\156\1\172\1\156\1\151\1\143\1\163\1\172\1\141\1\150\1\162\1\uffff\1\154\1\uffff\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\1\162\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\142\1\160\1\142\1\155\1\142\2\141\1\162\1\uffff\1\156\1\154\1\142\1\145\1\uffff\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\144\1\164\1\117\2\160\1\155\1\172\1\113\1\172\1\uffff\1\172\1\uffff\1\147\1\164\2\172\1\156\1\uffff\1\116\1\172\1\157\1\154\1\uffff\1\123\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\172\1\171\1\154\1\124\1\172\1\101\1\uffff\2\145\2\164\1\172\2\164\1\141\1\145\1\141\1\151\1\172\1\165\1\143\1\151\1\172\1\145\1\154\1\172\1\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\1\uffff\2\172\1\162\2\145\1\151\1\uffff\2\145\2\uffff\1\163\1\171\2\uffff\1\144\1\141\1\uffff\1\156\1\172\1\165\1\155\1\145\1\172\1\113\1\155\1\145\1\151\1\172\1\157\1\uffff\1\145\1\uffff\3\172\1\uffff\1\115\2\172\1\145\1\151\1\uffff\2\145\1\156\1\172\1\156\1\164\1\uffff\1\154\1\164\1\172\1\uffff\1\172\1\145\1\uffff\1\157\1\156\1\157\1\uffff\1\172\1\154\1\164\1\160\1\156\1\145\2\uffff\1\144\2\172\1\156\1\163\1\171\2\172\1\145\1\155\1\151\1\uffff\1\160\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\1\160\3\uffff\1\120\2\uffff\1\144\1\145\1\156\1\172\1\103\1\uffff\1\123\1\151\1\164\1\172\1\145\1\uffff\1\172\1\156\1\143\1\146\1\uffff\3\172\1\144\1\172\1\145\2\uffff\1\141\1\143\1\172\2\uffff\1\170\1\145\1\172\1\145\1\154\1\172\1\171\1\154\1\172\1\145\1\172\1\164\2\172\1\163\1\143\1\uffff\1\141\1\164\1\162\1\166\1\172\1\uffff\1\144\1\uffff\1\172\1\145\1\172\3\uffff\1\145\1\uffff\1\162\1\164\1\162\1\uffff\2\172\1\145\1\162\1\172\1\uffff\2\172\1\uffff\1\172\1\uffff\1\150\2\uffff\1\172\1\145\1\162\1\141\1\144\1\145\1\uffff\1\172\1\uffff\1\120\1\uffff\1\156\1\172\1\157\1\151\2\uffff\1\144\1\143\4\uffff\1\172\1\uffff\1\125\1\144\1\164\1\145\1\172\1\uffff\1\145\1\164\1\uffff\1\162\1\160\1\172\1\154\1\uffff\1\156\1\172\1\145\1\162\1\uffff\1\162\1\172\1\126\1\164\1\uffff\1\141\1\151\1\uffff\1\172\1\151\1\123\1\uffff\1\157\1\171\1\141\1\151\1\163\1\164\1\uffff\1\156\1\154\1\165\1\154\1\160\1\154\1\157\1\163\1\172\1\147\1\141\1\142\1\165\1\145\1\165\1\156\1\172\1\uffff\1\172\1\163\1\143\1\155\1\172\1\145\1\172\2\uffff\1\163\1\154\1\156\1\uffff\1\172\1\uffff\1\172\1\141\1\172\2\uffff\1\163\1\uffff\1\163\1\172\1\uffff";
+        "\1\uffff\1\76\1\174\1\46\1\145\1\157\1\163\1\165\1\171\1\164\1\145\1\171\1\141\1\165\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\3\uffff\1\160\1\166\1\145\3\uffff\1\163\1\72\1\151\1\162\1\154\1\172\5\uffff\1\75\6\uffff\2\162\1\uffff\1\164\1\154\1\172\1\160\1\163\1\124\1\172\2\151\1\171\1\155\1\142\1\160\2\162\1\157\1\164\1\163\1\172\1\164\1\156\1\166\1\141\1\160\1\150\1\151\1\156\1\172\1\164\1\167\1\154\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\156\1\162\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\3\uffff\1\160\1\113\1\155\1\171\3\uffff\1\172\1\163\2\uffff\1\163\1\157\5\uffff\2\172\1\163\1\150\1\145\1\143\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\151\1\172\1\145\1\172\1\145\1\143\1\151\1\141\1\uffff\1\172\1\145\1\165\1\147\1\164\1\145\1\164\2\145\1\164\1\143\1\171\1\156\1\172\1\154\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\164\1\141\1\172\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\141\1\124\1\172\1\162\2\141\1\162\1\154\1\145\1\uffff\2\164\1\165\1\uffff\1\145\1\uffff\1\151\1\145\1\141\1\172\1\150\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\166\1\165\1\uffff\1\156\1\uffff\1\172\1\164\1\162\1\164\1\151\1\162\1\uffff\1\170\1\162\1\145\1\151\1\162\1\151\1\162\1\155\1\143\1\150\1\172\1\165\1\uffff\1\172\1\157\2\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\1\164\2\172\2\145\1\154\1\165\1\uffff\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\156\1\171\1\uffff\1\151\1\142\1\156\1\151\1\157\1\146\1\162\1\157\1\160\1\172\1\157\1\142\1\141\1\144\1\uffff\1\172\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\145\1\154\1\164\1\171\1\uffff\1\171\1\151\1\163\1\156\1\163\1\172\1\156\1\172\1\156\1\151\1\143\1\163\1\172\1\141\1\150\1\162\1\uffff\1\154\1\uffff\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\1\162\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\142\1\160\1\144\1\154\1\142\1\155\1\142\2\141\1\162\1\172\1\uffff\1\156\1\154\1\142\1\145\1\uffff\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\144\1\164\1\117\2\160\1\155\1\172\1\113\1\172\1\uffff\1\172\1\uffff\1\147\1\164\2\172\1\156\1\uffff\1\116\1\172\1\157\1\154\1\uffff\1\123\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\172\1\171\1\154\1\124\1\172\1\101\1\uffff\2\145\2\164\1\172\2\164\1\141\1\145\1\172\1\145\1\141\1\151\1\172\1\165\1\143\1\151\1\uffff\1\172\1\145\1\154\1\172\1\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\1\uffff\2\172\1\162\2\145\1\151\1\uffff\2\145\2\uffff\1\163\1\171\2\uffff\1\144\1\141\1\uffff\1\156\1\172\1\165\1\155\1\145\1\172\1\113\1\155\1\145\1\151\1\172\1\157\1\uffff\1\145\1\uffff\3\172\1\uffff\1\115\2\172\1\145\1\151\1\uffff\2\145\1\156\1\172\1\uffff\1\172\1\156\1\164\1\uffff\1\154\1\164\1\172\1\uffff\1\172\1\145\1\uffff\1\157\1\156\1\157\1\uffff\1\172\1\154\1\164\1\160\1\156\1\145\2\uffff\1\144\2\172\1\156\1\163\1\171\2\172\1\145\1\155\1\151\1\uffff\1\160\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\1\160\3\uffff\1\120\2\uffff\1\144\1\145\1\156\1\172\1\103\2\uffff\1\123\1\151\1\164\1\172\1\145\1\uffff\1\172\1\156\1\143\1\146\1\uffff\3\172\1\144\1\172\1\145\2\uffff\1\141\1\143\1\172\2\uffff\1\170\1\145\1\172\1\145\1\154\1\172\1\171\1\154\1\172\1\145\1\172\1\164\2\172\1\163\1\143\1\uffff\1\141\1\164\1\162\1\166\1\172\1\uffff\1\144\1\uffff\1\172\1\145\1\172\3\uffff\1\145\1\uffff\1\162\1\164\1\162\1\uffff\2\172\1\145\1\162\1\172\1\uffff\2\172\1\uffff\1\172\1\uffff\1\150\2\uffff\1\172\1\145\1\162\1\141\1\144\1\145\1\uffff\1\172\1\uffff\1\120\1\uffff\1\156\1\172\1\157\1\151\2\uffff\1\144\1\143\4\uffff\1\172\1\uffff\1\125\1\144\1\164\1\145\1\172\1\uffff\1\145\1\164\1\uffff\1\162\1\160\1\172\1\154\1\uffff\1\156\1\172\1\145\1\162\1\uffff\1\162\1\172\1\126\1\164\1\uffff\1\141\1\151\1\uffff\1\172\1\151\1\123\1\uffff\1\157\1\171\1\141\1\151\1\163\1\164\1\uffff\1\156\1\154\1\165\1\154\1\160\1\154\1\157\1\163\1\172\1\147\1\141\1\142\1\165\1\145\1\165\1\156\1\172\1\uffff\1\172\1\163\1\143\1\155\1\172\1\145\1\172\2\uffff\1\163\1\154\1\156\1\uffff\1\172\1\uffff\1\172\1\141\1\172\2\uffff\1\163\1\uffff\1\163\1\172\1\uffff";
     static final String DFA21_acceptS =
-        "\44\uffff\1\114\1\115\1\116\1\117\1\uffff\1\123\1\127\1\130\3\uffff\1\171\1\172\1\173\5\uffff\1\u00ab\2\u00ac\1\u00af\1\u00b0\1\uffff\1\46\1\1\1\2\1\u00a6\1\3\1\u0090\2\uffff\1\u00ab\43\uffff\1\27\1\56\1\25\1\30\1\43\1\57\1\26\1\31\1\52\1\51\1\32\1\u00ad\1\u00ae\1\53\1\33\1\54\1\uffff\1\55\1\40\1\41\1\47\1\107\1\42\1\uffff\1\60\1\50\1\u00a5\1\111\22\uffff\1\u00a8\1\uffff\1\110\1\u00aa\1\112\1\114\1\115\1\116\1\117\1\uffff\1\123\1\127\1\130\4\uffff\1\171\1\172\1\173\2\uffff\1\u00a4\1\u0081\1\uffff\1\u00a9\1\u00ac\1\u00af\1\36\1\34\7\uffff\1\6\11\uffff\1\176\21\uffff\1\u0086\17\uffff\1\u00a3\4\uffff\1\37\1\35\1\44\1\45\37\uffff\1\175\2\uffff\1\4\1\uffff\1\61\24\uffff\1\u008c\7\uffff\1\133\1\uffff\1\20\6\uffff\1\23\14\uffff\1\u0087\23\uffff\1\u0084\1\uffff\1\73\20\uffff\1\167\13\uffff\1\u0083\3\uffff\1\76\11\uffff\1\7\2\uffff\1\u00a7\2\uffff\1\101\7\uffff\1\21\20\uffff\1\16\1\uffff\1\u0088\14\uffff\1\165\1\177\6\uffff\1\72\1\74\1\uffff\1\77\7\uffff\1\121\11\uffff\1\170\4\uffff\1\u008f\2\uffff\1\122\16\uffff\1\u008a\11\uffff\1\163\1\uffff\1\u0099\5\uffff\1\66\4\uffff\1\22\12\uffff\1\100\1\uffff\1\67\6\uffff\1\u0085\24\uffff\1\64\4\uffff\1\151\1\156\1\uffff\1\162\1\u0096\4\uffff\1\u0089\6\uffff\1\154\2\uffff\1\14\1\u008b\2\uffff\1\63\1\134\2\uffff\1\u0080\14\uffff\1\113\1\uffff\1\166\3\uffff\1\71\5\uffff\1\106\6\uffff\1\u00a0\3\uffff\1\11\2\uffff\1\24\3\uffff\1\145\6\uffff\1\12\1\u0082\13\uffff\1\17\3\uffff\1\146\4\uffff\1\62\2\uffff\1\u008d\1\u00a2\1\70\1\uffff\1\103\1\104\5\uffff\1\144\5\uffff\1\5\4\uffff\1\155\6\uffff\1\u009f\1\143\3\uffff\1\15\1\150\20\uffff\1\131\5\uffff\1\u0091\1\uffff\1\u0094\3\uffff\1\161\1\10\1\102\1\uffff\1\125\3\uffff\1\u0098\5\uffff\1\157\2\uffff\1\160\1\uffff\1\65\1\uffff\1\75\1\105\6\uffff\1\u00a1\1\uffff\1\13\1\uffff\1\174\4\uffff\1\135\1\124\2\uffff\1\152\1\147\1\153\1\164\1\uffff\1\132\5\uffff\1\u0092\2\uffff\1\u009d\4\uffff\1\126\4\uffff\1\u009e\4\uffff\1\u008e\2\uffff\1\u009a\3\uffff\1\u0093\6\uffff\1\u009b\21\uffff\1\120\7\uffff\1\u0095\1\u009c\3\uffff\1\140\1\uffff\1\u0097\3\uffff\1\141\1\136\1\uffff\1\137\2\uffff\1\142";
+        "\44\uffff\1\114\1\115\1\116\1\117\1\uffff\1\123\1\127\1\130\3\uffff\1\171\1\172\1\173\6\uffff\1\u00ae\2\u00af\1\u00b2\1\u00b3\1\uffff\1\46\1\1\1\2\1\u00a9\1\3\1\u0090\2\uffff\1\u00ae\43\uffff\1\27\1\56\1\25\1\30\1\43\1\57\1\26\1\31\1\52\1\51\1\32\1\u00b0\1\u00b1\1\53\1\33\1\54\1\uffff\1\55\1\40\1\41\1\47\1\107\1\42\1\uffff\1\60\1\50\1\u00a8\1\111\22\uffff\1\u00ab\1\110\1\uffff\1\u00ad\1\112\1\114\1\115\1\116\1\117\1\uffff\1\123\1\127\1\130\4\uffff\1\171\1\172\1\173\2\uffff\1\u00a7\1\u0081\2\uffff\1\u00ac\1\u00af\1\u00b2\1\36\1\34\7\uffff\1\6\11\uffff\1\176\21\uffff\1\u0086\17\uffff\1\u00a6\4\uffff\1\37\1\35\1\44\1\45\41\uffff\1\175\3\uffff\1\4\1\uffff\1\61\24\uffff\1\u008c\7\uffff\1\133\1\uffff\1\20\6\uffff\1\23\14\uffff\1\u0087\23\uffff\1\u0084\1\uffff\1\73\20\uffff\1\167\16\uffff\1\u0083\3\uffff\1\76\11\uffff\1\7\2\uffff\1\u00aa\2\uffff\1\101\7\uffff\1\21\20\uffff\1\16\1\uffff\1\u0088\14\uffff\1\165\1\177\6\uffff\1\72\1\74\1\uffff\1\77\7\uffff\1\121\14\uffff\1\170\4\uffff\1\u008f\2\uffff\1\122\16\uffff\1\u008a\11\uffff\1\163\1\uffff\1\u009c\5\uffff\1\66\4\uffff\1\22\12\uffff\1\100\1\uffff\1\67\6\uffff\1\u0085\21\uffff\1\u0099\5\uffff\1\64\4\uffff\1\151\1\156\1\uffff\1\162\1\u0096\4\uffff\1\u0089\6\uffff\1\154\2\uffff\1\14\1\u008b\2\uffff\1\63\1\134\2\uffff\1\u0080\14\uffff\1\113\1\uffff\1\166\3\uffff\1\71\5\uffff\1\106\4\uffff\1\u0097\3\uffff\1\u00a3\3\uffff\1\11\2\uffff\1\24\3\uffff\1\145\6\uffff\1\12\1\u0082\13\uffff\1\17\3\uffff\1\146\4\uffff\1\62\2\uffff\1\u008d\1\u00a5\1\70\1\uffff\1\103\1\104\5\uffff\1\144\1\u0098\5\uffff\1\5\4\uffff\1\155\6\uffff\1\u00a2\1\143\3\uffff\1\15\1\150\20\uffff\1\131\5\uffff\1\u0091\1\uffff\1\u0094\3\uffff\1\161\1\10\1\102\1\uffff\1\125\3\uffff\1\u009b\5\uffff\1\157\2\uffff\1\160\1\uffff\1\65\1\uffff\1\75\1\105\6\uffff\1\u00a4\1\uffff\1\13\1\uffff\1\174\4\uffff\1\135\1\124\2\uffff\1\152\1\147\1\153\1\164\1\uffff\1\132\5\uffff\1\u0092\2\uffff\1\u00a0\4\uffff\1\126\4\uffff\1\u00a1\4\uffff\1\u008e\2\uffff\1\u009d\3\uffff\1\u0093\6\uffff\1\u009e\21\uffff\1\120\7\uffff\1\u0095\1\u009f\3\uffff\1\140\1\uffff\1\u009a\3\uffff\1\141\1\136\1\uffff\1\137\2\uffff\1\142";
     static final String DFA21_specialS =
-        "\1\0\u0356\uffff}>";
+        "\1\0\u0367\uffff}>";
     static final String[] DFA21_transitionS = {
-            "\11\73\2\72\2\73\1\72\22\73\1\72\1\24\1\70\1\61\1\67\1\23\1\3\1\71\1\46\1\47\1\21\1\17\1\51\1\20\1\27\1\22\1\42\1\43\10\65\1\63\1\57\1\26\1\1\1\25\1\30\1\60\2\67\1\35\1\36\4\67\1\33\11\67\1\34\1\37\6\67\1\52\1\73\1\53\1\66\1\67\1\73\1\62\1\50\1\5\1\11\1\31\1\32\1\67\1\64\1\6\1\55\1\56\1\14\1\16\1\15\1\54\1\41\1\67\1\12\1\13\1\10\1\7\1\4\1\40\3\67\1\44\1\2\1\45\uff82\73",
-            "\1\74\1\75",
-            "\1\77",
-            "\1\101",
-            "\1\103\3\uffff\1\104",
-            "\1\106\15\uffff\1\107",
-            "\1\110\1\uffff\1\114\6\uffff\1\111\1\112\4\uffff\1\113",
-            "\1\116\6\uffff\1\115",
-            "\1\121\6\uffff\1\123\1\120\10\uffff\1\117\6\uffff\1\122",
-            "\1\126\3\uffff\1\124\3\uffff\1\127\5\uffff\1\130\4\uffff\1\125",
-            "\1\132\3\uffff\1\131",
-            "\1\136\1\uffff\1\133\16\uffff\1\134\1\135\1\uffff\1\137\1\uffff\1\140",
-            "\1\141",
-            "\1\143\11\uffff\1\142\3\uffff\1\145\1\uffff\1\144",
-            "\1\146\7\uffff\1\150\11\uffff\1\147",
-            "\1\152\21\uffff\1\151",
-            "\1\156\17\uffff\1\154\1\155",
-            "\1\161\22\uffff\1\160",
-            "\1\164\4\uffff\1\165\15\uffff\1\163",
-            "\1\167",
-            "\1\171",
-            "\1\173",
-            "\1\176\1\175",
-            "\1\u0080",
-            "\1\u0083\13\uffff\1\u0082",
-            "\1\u0088\1\uffff\1\u0087\3\uffff\1\u0086\5\uffff\1\u0085",
-            "\1\u0089\7\uffff\1\u008a\5\uffff\1\u008b",
-            "\1\u008c",
+            "\11\74\2\73\2\74\1\73\22\74\1\73\1\24\1\71\1\61\1\70\1\23\1\3\1\72\1\46\1\47\1\21\1\17\1\51\1\20\1\27\1\22\1\42\1\43\10\66\1\63\1\57\1\26\1\1\1\25\1\30\1\60\2\70\1\35\1\36\4\70\1\33\11\70\1\34\1\37\6\70\1\52\1\74\1\53\1\67\1\70\1\74\1\62\1\50\1\5\1\11\1\31\1\32\1\65\1\64\1\6\1\55\1\56\1\14\1\16\1\15\1\54\1\41\1\70\1\12\1\13\1\10\1\7\1\4\1\40\3\70\1\44\1\2\1\45\uff82\74",
+            "\1\75\1\76",
+            "\1\100",
+            "\1\102",
+            "\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\127\3\uffff\1\125\3\uffff\1\130\5\uffff\1\131\4\uffff\1\126",
+            "\1\133\3\uffff\1\132",
+            "\1\137\1\uffff\1\134\16\uffff\1\135\1\136\1\uffff\1\140\1\uffff\1\141",
+            "\1\142",
+            "\1\144\11\uffff\1\143\3\uffff\1\146\1\uffff\1\145",
+            "\1\147\7\uffff\1\151\11\uffff\1\150",
+            "\1\153\21\uffff\1\152",
+            "\1\157\17\uffff\1\155\1\156",
+            "\1\162\22\uffff\1\161",
+            "\1\165\4\uffff\1\166\15\uffff\1\164",
+            "\1\170",
+            "\1\172",
+            "\1\174",
+            "\1\177\1\176",
+            "\1\u0081",
+            "\1\u0084\13\uffff\1\u0083",
+            "\1\u0089\1\uffff\1\u0088\3\uffff\1\u0087\5\uffff\1\u0086",
+            "\1\u008a\7\uffff\1\u008b\5\uffff\1\u008c",
             "\1\u008d",
             "\1\u008e",
             "\1\u008f",
             "\1\u0090",
-            "\1\u0091\6\uffff\1\u0092",
-            "\1\u0093\3\uffff\1\u0096\14\uffff\1\u0094\2\uffff\1\u0095",
-            "\12\u0098\10\uffff\1\u009a\1\uffff\3\u009a\5\uffff\1\u009a\13\uffff\1\u0097\6\uffff\1\u0098\2\uffff\1\u009a\1\uffff\3\u009a\5\uffff\1\u009a\13\uffff\1\u0097",
-            "\12\u0098\10\uffff\1\u009a\1\uffff\3\u009a\5\uffff\1\u009a\22\uffff\1\u0098\2\uffff\1\u009a\1\uffff\3\u009a\5\uffff\1\u009a",
+            "\1\u0091",
+            "\1\u0092\6\uffff\1\u0093",
+            "\1\u0094\3\uffff\1\u0097\14\uffff\1\u0095\2\uffff\1\u0096",
+            "\12\u009a\10\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1\u009b\13\uffff\1\u0098\6\uffff\1\u009a\2\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1\u009b\13\uffff\1\u0098",
+            "\12\u009a\10\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1\u009b\22\uffff\1\u009a\2\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1\u009b",
             "",
             "",
             "",
             "",
-            "\1\u00a0",
+            "\1\u00a1",
             "",
             "",
             "",
-            "\1\u00a5\1\uffff\1\u00a4",
-            "\1\u00a6",
+            "\1\u00a6\1\uffff\1\u00a5",
             "\1\u00a7",
+            "\1\u00a8",
             "",
             "",
             "",
-            "\1\u00ac\20\uffff\1\u00ab",
-            "\1\u00ad",
-            "\1\u00af",
-            "\12\u0098\10\uffff\1\u009a\1\uffff\3\u009a\5\uffff\1\u009a\22\uffff\1\u0098\2\uffff\1\u009a\1\uffff\3\u009a\5\uffff\1\u009a",
-            "\1\105\34\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u00ad\20\uffff\1\u00ac",
+            "\1\u00ae",
+            "\1\u00b0",
+            "\1\u00b1",
+            "\12\u009a\10\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1\u009b\22\uffff\1\u009a\2\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1\u009b",
+            "\1\106\34\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
             "",
             "",
             "",
             "",
-            "\1\u00b3",
+            "\1\u00b5",
             "",
             "",
             "",
             "",
             "",
             "",
-            "\1\u00b6\5\uffff\1\u00b5",
-            "\1\u00b7",
+            "\1\u00b8\5\uffff\1\u00b7",
+            "\1\u00b9",
             "",
-            "\1\u00b8\17\uffff\1\u00b9\1\u00ba",
-            "\1\u00bb",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u00ba\17\uffff\1\u00bb\1\u00bc",
             "\1\u00bd",
-            "\1\u00bf\1\uffff\1\u00be\1\uffff\1\u00c0\12\uffff\1\u00c1",
-            "\1\u00c2\7\uffff\1\u00c5\1\uffff\1\u00c4\3\uffff\1\u00c3",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u00c7",
-            "\1\u00c8",
-            "\1\u00c9\23\uffff\1\u00cb\3\uffff\1\u00ca",
-            "\1\u00cc",
-            "\1\u00cd",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u00bf",
+            "\1\u00c1\1\uffff\1\u00c0\1\uffff\1\u00c2\12\uffff\1\u00c3",
+            "\1\u00c4\7\uffff\1\u00c7\1\uffff\1\u00c6\3\uffff\1\u00c5",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb\23\uffff\1\u00cd\3\uffff\1\u00cc",
             "\1\u00ce",
             "\1\u00cf",
-            "\1\u00d2\2\uffff\1\u00d1\13\uffff\1\u00d0",
-            "\1\u00d3",
-            "\1\u00d4",
-            "\1\u00d6\13\uffff\1\u00d5",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\14\105\1\u00d7\15\105",
-            "\1\u00d9\1\u00da\14\uffff\1\u00db",
-            "\1\u00dc",
-            "\1\u00dd\1\uffff\1\u00de",
-            "\1\u00df",
-            "\1\u00e0",
+            "\1\u00d0",
+            "\1\u00d1",
+            "\1\u00d4\2\uffff\1\u00d3\13\uffff\1\u00d2",
+            "\1\u00d5",
+            "\1\u00d6",
+            "\1\u00d8\13\uffff\1\u00d7",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\14\106\1\u00d9\15\106",
+            "\1\u00db\1\u00dc\14\uffff\1\u00dd",
+            "\1\u00de",
+            "\1\u00df\1\uffff\1\u00e0",
             "\1\u00e1",
             "\1\u00e2",
             "\1\u00e3",
@@ -5884,27 +5985,22 @@
             "\1\u00e5",
             "\1\u00e6",
             "\1\u00e7",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u00e9\7\uffff\1\u00ea",
-            "\1\u00eb",
-            "\1\u00ec",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u00eb\7\uffff\1\u00ec",
             "\1\u00ed",
+            "\1\u00ee",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "",
             "",
             "",
@@ -5916,96 +6012,99 @@
             "",
             "",
             "",
+            "",
+            "",
             "\1\u00f1",
-            "\1\u00f2",
-            "\1\u00f3\1\u00f4",
-            "\1\u00f5",
-            "\1\u00f6",
-            "\1\u00f7\1\uffff\1\u00f8",
-            "\1\u00f9",
-            "\1\u00fa\13\uffff\1\u00fb",
-            "\1\u00fc",
-            "\1\u00fd",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\u00f5\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9\1\uffff\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc\13\uffff\1\u00fd",
             "\1\u00fe",
             "\1\u00ff",
             "\1\u0100",
             "\1\u0101",
             "\1\u0102",
-            "\1\u0103\5\uffff\1\u0104",
-            "\1\u0105",
-            "\1\u0106",
-            "",
-            "\12\u0098\10\uffff\1\u009a\1\uffff\3\u009a\5\uffff\1\u009a\22\uffff\1\u0098\2\uffff\1\u009a\1\uffff\3\u009a\5\uffff\1\u009a",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105\5\uffff\1\u0106",
             "\1\u0107",
-            "",
-            "",
-            "",
             "\1\u0108",
+            "",
+            "",
+            "\12\u009a\10\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1\u009b\22\uffff\1\u009a\2\uffff\1\u009b\1\uffff\3\u009b\5\uffff\1\u009b",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u0109",
+            "",
+            "",
+            "",
             "\1\u010a",
             "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
             "",
             "",
             "",
-            "\1\105\13\uffff\12\105\7\uffff\1\105\1\u010e\1\105\1\u010f\6\105\1\u010c\4\105\1\u010d\12\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u0111",
+            "\1\106\13\uffff\12\106\7\uffff\1\106\1\u0112\1\106\1\u0113\2\106\1\u010e\3\106\1\u0110\4\106\1\u0111\3\106\1\u010f\6\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0115",
             "",
             "",
-            "\1\u0112",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\24\105\1\u0114\5\105",
             "\1\u0116",
             "\1\u0117",
-            "\1\u0118\1\uffff\1\u0119",
-            "\1\u011a",
-            "\1\u011b",
             "",
+            "",
+            "",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\24\106\1\u0119\5\106",
+            "\1\u011b",
             "\1\u011c",
-            "\1\u011d",
-            "\1\u011e",
+            "\1\u011d\1\uffff\1\u011e",
             "\1\u011f",
             "\1\u0120",
-            "\1\u0121\23\uffff\1\u0122",
+            "",
+            "\1\u0121",
+            "\1\u0122",
             "\1\u0123",
             "\1\u0124",
-            "\1\u0125\5\uffff\1\u0126",
-            "",
-            "\1\u0127",
+            "\1\u0125",
+            "\1\u0126\23\uffff\1\u0127",
             "\1\u0128",
             "\1\u0129",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u012b",
+            "\1\u012a\5\uffff\1\u012b",
+            "",
             "\1\u012c",
             "\1\u012d",
             "\1\u012e",
-            "\1\u012f",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0130",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\1\u0131\31\105",
+            "\1\u0131",
+            "\1\u0132",
             "\1\u0133",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u0136\3\uffff\1\u0135",
-            "\1\u0137",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\1\u0136\31\106",
             "\1\u0138",
-            "\1\u0139",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\4\105\1\u013a\25\105",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u013b\3\uffff\1\u013a",
             "\1\u013c",
             "\1\u013d",
             "\1\u013e",
-            "\1\u013f",
-            "\1\u0140",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\4\106\1\u013f\25\106",
             "\1\u0141",
             "\1\u0142",
             "\1\u0143",
@@ -6013,86 +6112,85 @@
             "\1\u0145",
             "\1\u0146",
             "\1\u0147",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u0148",
             "\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\u014c",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u014e",
             "",
-            "\1\u014b\3\uffff\1\u014a",
-            "\1\u014c\11\uffff\1\u014d",
-            "\1\u014e\5\uffff\1\u014f",
-            "\1\u0150\10\uffff\1\u0152\1\u0151",
+            "\1\u0150\3\uffff\1\u014f",
+            "\1\u0151\11\uffff\1\u0152",
+            "\1\u0153\5\uffff\1\u0154",
+            "\1\u0155\10\uffff\1\u0157\1\u0156",
             "",
             "",
             "",
             "",
-            "\1\u0153",
-            "\1\u0154",
-            "\1\u0155",
-            "\1\u0156",
-            "\1\u0157",
             "\1\u0158",
             "\1\u0159",
             "\1\u015a",
-            "\1\105\13\uffff\12\105\7\uffff\15\105\1\u015b\14\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u015b",
+            "\1\u015c",
             "\1\u015d",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u015e",
             "\1\u015f",
-            "\1\u0160",
-            "\1\u0161",
+            "\1\106\13\uffff\12\106\7\uffff\15\106\1\u0160\14\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0162",
-            "\1\u0163",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0164",
             "\1\u0165",
             "\1\u0166",
-            "\1\u0168\3\uffff\1\u0167",
+            "\1\u0167",
+            "\1\u0168",
             "\1\u0169",
             "\1\u016a",
             "\1\u016b",
-            "\1\u016c",
-            "\1\u016d",
+            "\1\u016d\3\uffff\1\u016c",
             "\1\u016e",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u016f",
             "\1\u0170",
             "\1\u0171",
             "\1\u0172",
             "\1\u0173",
-            "",
-            "\1\u0174",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0175",
-            "",
             "\1\u0176",
-            "",
             "\1\u0177",
-            "\1\u0178\3\uffff\1\u0179",
+            "\1\u0178",
+            "\1\u0179",
             "\1\u017a",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "",
+            "\1\u017b",
             "\1\u017c",
             "\1\u017d",
+            "",
             "\1\u017e",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u0180",
-            "\1\u0181",
+            "",
+            "\1\u017f",
+            "\1\u0180\3\uffff\1\u0181",
             "\1\u0182",
-            "\1\u0183",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0184",
             "\1\u0185",
             "\1\u0186",
-            "\1\u0187",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0188",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u0189",
             "\1\u018a",
             "\1\u018b",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\3\105\1\u018e\16\105\1\u018d\7\105",
+            "\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\u0192",
             "\1\u0193",
-            "\1\u0194",
             "",
-            "\1\u0195",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\23\105\1\u0196\6\105\4\uffff\1\105\1\uffff\32\105",
+            "\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\u0196\16\106\1\u0195\7\106",
             "\1\u0198",
             "\1\u0199",
             "\1\u019a",
@@ -6100,92 +6198,90 @@
             "\1\u019c",
             "",
             "\1\u019d",
-            "\1\u019e",
-            "\1\u019f",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\23\106\1\u019e\6\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01a0",
             "\1\u01a1",
-            "\1\u01a3\3\uffff\1\u01a2",
+            "\1\u01a2",
+            "\1\u01a3",
             "\1\u01a4",
+            "",
             "\1\u01a5",
             "\1\u01a6",
             "\1\u01a7",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u01a8",
             "\1\u01a9",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u01ab",
+            "\1\u01ab\3\uffff\1\u01aa",
             "\1\u01ac",
             "\1\u01ad",
             "\1\u01ae",
             "\1\u01af",
-            "\1\u01b0",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01b1",
-            "\1\u01b2",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01b3",
             "\1\u01b4",
             "\1\u01b5",
             "\1\u01b6",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u01b7",
+            "\1\u01b8",
             "\1\u01b9",
             "\1\u01ba",
             "\1\u01bb",
             "\1\u01bc",
-            "",
             "\1\u01bd",
-            "",
             "\1\u01be",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\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\u01c1",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u01c2",
             "\1\u01c3",
             "\1\u01c4",
+            "",
             "\1\u01c5",
+            "",
             "\1\u01c6",
-            "\1\u01c7",
-            "\1\u01c8",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01c9",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\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\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01d3",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u01d4",
             "\1\u01d5",
+            "",
             "\1\u01d6",
             "\1\u01d7",
             "\1\u01d8",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u01d9",
             "\1\u01da",
             "\1\u01db",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\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\u01e0",
             "\1\u01e1",
             "\1\u01e2",
             "\1\u01e3",
-            "\1\u01e4",
             "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01e5",
             "\1\u01e6",
             "",
-            "\1\u01e7",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01e8",
-            "",
             "\1\u01e9",
             "\1\u01ea",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u01eb",
             "\1\u01ec",
             "\1\u01ed",
             "\1\u01ee",
@@ -6193,450 +6289,473 @@
             "",
             "\1\u01f0",
             "\1\u01f1",
+            "",
             "\1\u01f2",
             "\1\u01f3",
+            "",
             "\1\u01f4",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u01f6",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u01f5",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01f7",
             "\1\u01f8",
             "\1\u01f9",
             "\1\u01fa",
+            "",
             "\1\u01fb",
-            "\1\105\13\uffff\12\105\7\uffff\10\105\1\u01fc\21\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u01fc",
+            "\1\u01fd",
             "\1\u01fe",
             "\1\u01ff",
-            "\1\u0200",
-            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0201",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0203",
             "\1\u0204",
             "\1\u0205",
             "\1\u0206",
-            "\1\u0207",
-            "\1\u0208",
+            "\1\106\13\uffff\12\106\7\uffff\10\106\1\u0207\21\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0209",
             "\1\u020a",
-            "\1\u020b\16\uffff\1\u020c",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u020b",
+            "",
+            "\1\u020c",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u020e",
-            "",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u020f",
             "\1\u0210",
             "\1\u0211",
             "\1\u0212",
             "\1\u0213",
             "\1\u0214",
-            "",
-            "",
             "\1\u0215",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u0217",
-            "\1\u0218",
+            "\1\u0216\16\uffff\1\u0217",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0219",
-            "\1\u021a",
+            "",
+            "",
+            "\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\u021f",
+            "",
+            "",
             "\1\u0220",
-            "\1\u0221",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0222",
             "\1\u0223",
             "\1\u0224",
             "\1\u0225",
-            "",
             "\1\u0226",
             "\1\u0227",
+            "",
             "\1\u0228",
             "\1\u0229",
-            "",
             "\1\u022a",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "",
+            "\1\u022b",
             "\1\u022c",
             "\1\u022d",
             "\1\u022e",
             "\1\u022f",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u0230",
+            "\1\u0231",
             "\1\u0232",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u0234",
             "\1\u0235",
             "\1\u0236",
             "\1\u0237",
+            "",
             "\1\u0238",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
             "\1\u023a",
             "\1\u023b",
             "\1\u023c",
             "\1\u023d",
-            "\1\u023e",
-            "\1\u023f",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u0241\6\uffff\1\u0242",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "",
+            "\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\u0240",
+            "\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\u0243",
+            "\1\u0244",
             "\1\u0245",
             "\1\u0246",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u0249",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
+            "\1\u0248",
+            "\1\u0249",
             "\1\u024a",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u024b",
             "\1\u024c",
             "\1\u024d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u024f\6\uffff\1\u0250",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
-            "\1\u024e",
-            "\1\u024f",
-            "\1\u0250",
-            "\1\u0251",
-            "\1\u0252",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
             "\1\u0253",
             "\1\u0254",
-            "\1\u0255",
-            "\1\u0256",
+            "\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\u0257",
             "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\3\105\1\u0259\26\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u0258",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u025a",
             "\1\u025b",
+            "",
             "\1\u025c",
             "\1\u025d",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u025e",
             "\1\u025f",
-            "",
             "\1\u0260",
             "\1\u0261",
             "\1\u0262",
             "\1\u0263",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\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\106\13\uffff\12\106\7\uffff\3\106\1\u0267\26\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0269",
             "\1\u026a",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u026c",
+            "\1\u026b",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u026d",
+            "",
             "\1\u026e",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u026f",
             "\1\u0270",
             "\1\u0271",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0273",
-            "",
             "\1\u0274",
             "\1\u0275",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u0277",
-            "",
-            "",
+            "\1\u0276",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0278",
-            "",
-            "",
             "\1\u0279",
             "\1\u027a",
-            "\1\u027b",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u027c",
+            "\1\u027d",
+            "\1\u027e",
             "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u027f",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0280",
             "\1\u0281",
-            "\1\u0282",
-            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0283",
+            "",
             "\1\u0284",
-            "",
-            "",
             "\1\u0285",
-            "\1\u0286",
-            "",
-            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0287",
+            "",
+            "",
             "\1\u0288",
             "",
+            "",
             "\1\u0289",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u028a",
             "\1\u028b",
             "\1\u028c",
-            "\1\u028d",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "",
+            "\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\u028f",
             "\1\u0290",
             "\1\u0291",
             "\1\u0292",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "",
+            "\1\u0293",
             "\1\u0294",
             "",
-            "\1\u0295",
             "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u0295",
+            "\1\u0296",
+            "",
+            "",
+            "\1\u0297",
+            "\1\u0298",
             "",
             "\1\u0299",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u029b",
             "\1\u029c",
             "\1\u029d",
-            "",
-            "\1\u029e",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u029f",
             "\1\u02a0",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u02a1",
             "\1\u02a2",
-            "\1\u02a3",
-            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02a4",
-            "\1\u02a5",
-            "\1\u02a6",
             "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u02a8",
+            "\1\u02a5",
+            "",
+            "\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\u02a9",
-            "\1\u02aa",
-            "\1\u02ab",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\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\u02ac",
             "\1\u02ad",
+            "",
             "\1\u02ae",
             "\1\u02af",
             "\1\u02b0",
-            "\1\u02b1",
+            "\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\u02b3",
+            "\1\u02b4",
             "",
-            "\1\u02b2",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
             "\1\u02b5",
             "\1\u02b6",
             "\1\u02b7",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02b9",
+            "",
             "\1\u02ba",
             "\1\u02bb",
             "\1\u02bc",
             "",
-            "\1\u02bd",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02be",
             "\1\u02bf",
-            "",
             "\1\u02c0",
             "\1\u02c1",
             "\1\u02c2",
+            "",
+            "",
             "\1\u02c3",
-            "",
-            "\1\u02c4",
-            "\1\u02c5",
-            "",
-            "",
-            "",
+            "\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\u02c6",
-            "",
-            "",
             "\1\u02c7",
             "\1\u02c8",
-            "\1\u02c9",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\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\u02cb",
+            "\1\u02cc",
+            "\1\u02cd",
             "",
-            "\1\u02cd\3\uffff\1\u02cc",
             "\1\u02ce",
             "\1\u02cf",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u02d1",
+            "\1\u02d0",
             "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u02d1",
+            "\1\u02d2",
             "\1\u02d3",
             "\1\u02d4",
+            "",
             "\1\u02d5",
+            "\1\u02d6",
             "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "",
+            "",
+            "\1\u02d7",
+            "",
+            "",
+            "\1\u02d8",
             "\1\u02d9",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u02db",
-            "",
-            "",
+            "\1\u02da",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02dc",
-            "\1\u02dd",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
             "",
             "",
+            "\1\u02de\3\uffff\1\u02dd",
             "\1\u02df",
             "\1\u02e0",
-            "\1\u02e1",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02e2",
-            "\1\u02e3",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02e4",
             "\1\u02e5",
             "\1\u02e6",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u02e8",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "",
+            "\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\u02ea",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02ec",
+            "",
+            "",
             "\1\u02ed",
             "\1\u02ee",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
-            "\1\u02ef",
+            "",
             "\1\u02f0",
             "\1\u02f1",
             "\1\u02f2",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "",
+            "\1\u02f3",
             "\1\u02f4",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02f6",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "",
-            "",
-            "",
-            "\1\u02f8",
-            "",
+            "\1\u02f7",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02f9",
-            "\1\u02fa",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02fb",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02fe",
             "\1\u02ff",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
             "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u0300",
+            "\1\u0301",
+            "\1\u0302",
+            "\1\u0303",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u0305",
             "",
-            "\1\u0304",
-            "",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u0306",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0307",
-            "\1\u0308",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "",
             "\1\u0309",
+            "",
             "\1\u030a",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "",
+            "\1\u030b",
             "\1\u030c",
             "",
-            "\1\u030d",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\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\u030f",
             "\1\u0310",
+            "\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\u0311",
-            "\1\u0312",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
-            "",
-            "",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "",
-            "\1\u0314",
             "\1\u0315",
-            "\1\u0316",
-            "\1\u0317",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
             "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0317",
+            "\1\u0318",
             "\1\u0319",
             "\1\u031a",
-            "",
             "\1\u031b",
-            "\1\u031c",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u031d",
+            "",
             "\1\u031e",
-            "",
-            "\1\u031f",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0320",
             "\1\u0321",
+            "",
+            "",
             "\1\u0322",
-            "",
             "\1\u0323",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u0325\20\uffff\1\u0326\1\uffff\1\u0327",
+            "",
+            "",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u0325",
+            "\1\u0326",
+            "\1\u0327",
             "\1\u0328",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
-            "\1\u0329",
             "\1\u032a",
+            "\1\u032b",
             "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
             "\1\u032c",
-            "\1\u032d\17\uffff\1\u032e",
-            "",
+            "\1\u032d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u032f",
+            "",
             "\1\u0330",
-            "\1\u0331",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0332",
             "\1\u0333",
-            "\1\u0334",
             "",
-            "\1\u0335",
-            "\1\u0336",
-            "\1\u0337",
-            "\1\u0338",
+            "\1\u0334",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0336\20\uffff\1\u0337\1\uffff\1\u0338",
             "\1\u0339",
+            "",
             "\1\u033a",
             "\1\u033b",
-            "\1\u033c",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "\1\u033e",
-            "\1\u033f",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u033d",
+            "\1\u033e\17\uffff\1\u033f",
+            "",
             "\1\u0340",
             "\1\u0341",
             "\1\u0342",
             "\1\u0343",
             "\1\u0344",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u0345",
             "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u0346",
             "\1\u0347",
             "\1\u0348",
             "\1\u0349",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u034a",
             "\1\u034b",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "",
-            "",
+            "\1\u034c",
             "\1\u034d",
-            "\1\u034e",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u034f",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\1\u0350",
+            "\1\u0351",
             "\1\u0352",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
-            "",
-            "",
+            "\1\u0353",
             "\1\u0354",
-            "",
             "\1\u0355",
-            "\1\105\13\uffff\12\105\7\uffff\32\105\4\uffff\1\105\1\uffff\32\105",
+            "\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\u0358",
+            "\1\u0359",
+            "\1\u035a",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u035c",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "\1\u035e",
+            "\1\u035f",
+            "\1\u0360",
+            "",
+            "\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\u0363",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "\1\u0365",
+            "",
+            "\1\u0366",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             ""
     };
 
@@ -6670,7 +6789,7 @@
             this.transition = DFA21_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | T__180 | T__181 | T__182 | 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;
@@ -6784,19 +6903,21 @@
 
                         else if ( (LA21_0=='h') ) {s = 52;}
 
-                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {s = 53;}
+                        else if ( (LA21_0=='g') ) {s = 53;}
 
-                        else if ( (LA21_0=='^') ) {s = 54;}
+                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {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 = 55;}
 
-                        else if ( (LA21_0=='\"') ) {s = 56;}
+                        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=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 56;}
 
-                        else if ( (LA21_0=='\'') ) {s = 57;}
+                        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=='\'') ) {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;}
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 59;}
+
+                        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 = 60;}
 
                         if ( s>=0 ) return s;
                         break;
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarParser.java b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarParser.java
index 6b13331..25a6d43 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarParser.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarParser.java
@@ -23,9 +23,11 @@
 /**
  * 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
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
  *         Florian Pirchner - Initial implementation
@@ -35,7 +37,7 @@
 @SuppressWarnings("all")
 public class InternalEntityGrammarParser extends AbstractInternalContentAssistParser {
     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'", "'derived'", "'collection'", "'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'", "'filterDepth'", "'['", "']'", "'opposite'", "'properties'", "'def'", "'states'", "'superIndex'", "'inheritancePerClass'", "'discriminatorColumn'", "'discriminatorType'", "'discriminatorValue'", "'inheritancePerSubclass'", "'datatype'", "'jvmType'", "'isFalse'", "'msgCode'", "'msgI18nKey'", "'severity'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'filter'", "'key'", "'value'", "';'", "'@'", "'#'", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'&'", "'abstract'", "'historized'", "'timedependent'", "'cacheable'", "'mappedSuperclass'", "'unique'", "'domainDescription'", "'domainKey'", "'range'", "'onKanbanCard'", "'asKanbanState'", "'asKanbanOrdering'", "'decentOrder'", "'asPrimitive'", "'dateType'", "'asBlob'", "'asDefault'", "'forNull'", "'ns'", "'::'", "'?.'", "'|'", "'true'"
+        "<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'", "'derived'", "'collection'", "'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'", "'filterDepth'", "'['", "']'", "'opposite'", "'properties'", "'def'", "'states'", "'superIndex'", "'inheritancePerClass'", "'discriminatorColumn'", "'discriminatorType'", "'discriminatorValue'", "'inheritancePerSubclass'", "'datatype'", "'jvmType'", "'isFalse'", "'msgCode'", "'msgI18nKey'", "'severity'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'filter'", "'key'", "'value'", "';'", "'@'", "'#'", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'&'", "'abstract'", "'historized'", "'timedependent'", "'cacheable'", "'mappedSuperclass'", "'unique'", "'asGrid'", "'asTable'", "'group'", "'domainDescription'", "'domainKey'", "'range'", "'onKanbanCard'", "'asKanbanState'", "'asKanbanOrdering'", "'decentOrder'", "'asPrimitive'", "'dateType'", "'asBlob'", "'asDefault'", "'forNull'", "'ns'", "'::'", "'?.'", "'|'", "'true'"
     };
     public static final int T__144=144;
     public static final int T__143=143;
@@ -133,6 +135,9 @@
     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__180=180;
+    public static final int T__182=182;
+    public static final int T__181=181;
     public static final int T__19=19;
     public static final int T__15=15;
     public static final int T__16=16;
@@ -12196,8 +12201,8 @@
             case 20:
             case 21:
             case 22:
-            case 163:
-            case 164:
+            case 166:
+            case 167:
                 {
                 alt6=2;
                 }
@@ -12320,56 +12325,156 @@
     // $ANTLR end "rule__EntityFeature__Alternatives_2"
 
 
-    // $ANTLR start "rule__EntityFeature__Alternatives_2_1_1"
-    // InternalEntityGrammar.g:3583:1: rule__EntityFeature__Alternatives_2_1_1 : ( ( ( rule__EntityFeature__Group_2_1_1_0__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_1__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_2__0 ) ) );
-    public final void rule__EntityFeature__Alternatives_2_1_1() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Alternatives_2_0_1_8_2"
+    // InternalEntityGrammar.g:3583:1: rule__EntityFeature__Alternatives_2_0_1_8_2 : ( ( ( rule__EntityFeature__AsGridAssignment_2_0_1_8_2_0 ) ) | ( ( rule__EntityFeature__AsTableAssignment_2_0_1_8_2_1 ) ) );
+    public final void rule__EntityFeature__Alternatives_2_0_1_8_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3587:1: ( ( ( rule__EntityFeature__Group_2_1_1_0__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_1__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_2__0 ) ) )
-            int alt7=3;
-            switch ( input.LA(1) ) {
-            case 20:
-                {
+            // InternalEntityGrammar.g:3587:1: ( ( ( rule__EntityFeature__AsGridAssignment_2_0_1_8_2_0 ) ) | ( ( rule__EntityFeature__AsTableAssignment_2_0_1_8_2_1 ) ) )
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0==163) ) {
                 alt7=1;
-                }
-                break;
-            case 22:
-                {
+            }
+            else if ( (LA7_0==164) ) {
                 alt7=2;
-                }
-                break;
-            case 16:
-            case 18:
-            case 19:
-            case 21:
-            case 163:
-            case 164:
-                {
-                alt7=3;
-                }
-                break;
-            default:
+            }
+            else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
                     new NoViableAltException("", 7, 0, input);
 
                 throw nvae;
             }
-
             switch (alt7) {
                 case 1 :
-                    // InternalEntityGrammar.g:3588:2: ( ( rule__EntityFeature__Group_2_1_1_0__0 ) )
+                    // InternalEntityGrammar.g:3588:2: ( ( rule__EntityFeature__AsGridAssignment_2_0_1_8_2_0 ) )
                     {
-                    // InternalEntityGrammar.g:3588:2: ( ( rule__EntityFeature__Group_2_1_1_0__0 ) )
-                    // InternalEntityGrammar.g:3589:3: ( rule__EntityFeature__Group_2_1_1_0__0 )
+                    // InternalEntityGrammar.g:3588:2: ( ( rule__EntityFeature__AsGridAssignment_2_0_1_8_2_0 ) )
+                    // InternalEntityGrammar.g:3589:3: ( rule__EntityFeature__AsGridAssignment_2_0_1_8_2_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getEntityFeatureAccess().getAsGridAssignment_2_0_1_8_2_0()); 
+                    }
+                    // InternalEntityGrammar.g:3590:3: ( rule__EntityFeature__AsGridAssignment_2_0_1_8_2_0 )
+                    // InternalEntityGrammar.g:3590:4: rule__EntityFeature__AsGridAssignment_2_0_1_8_2_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__AsGridAssignment_2_0_1_8_2_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getEntityFeatureAccess().getAsGridAssignment_2_0_1_8_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalEntityGrammar.g:3594:2: ( ( rule__EntityFeature__AsTableAssignment_2_0_1_8_2_1 ) )
+                    {
+                    // InternalEntityGrammar.g:3594:2: ( ( rule__EntityFeature__AsTableAssignment_2_0_1_8_2_1 ) )
+                    // InternalEntityGrammar.g:3595:3: ( rule__EntityFeature__AsTableAssignment_2_0_1_8_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getEntityFeatureAccess().getAsTableAssignment_2_0_1_8_2_1()); 
+                    }
+                    // InternalEntityGrammar.g:3596:3: ( rule__EntityFeature__AsTableAssignment_2_0_1_8_2_1 )
+                    // InternalEntityGrammar.g:3596:4: rule__EntityFeature__AsTableAssignment_2_0_1_8_2_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__AsTableAssignment_2_0_1_8_2_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getEntityFeatureAccess().getAsTableAssignment_2_0_1_8_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Alternatives_2_0_1_8_2"
+
+
+    // $ANTLR start "rule__EntityFeature__Alternatives_2_1_1"
+    // InternalEntityGrammar.g:3604:1: rule__EntityFeature__Alternatives_2_1_1 : ( ( ( rule__EntityFeature__Group_2_1_1_0__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_1__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_2__0 ) ) );
+    public final void rule__EntityFeature__Alternatives_2_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:3608:1: ( ( ( rule__EntityFeature__Group_2_1_1_0__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_1__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_2__0 ) ) )
+            int alt8=3;
+            switch ( input.LA(1) ) {
+            case 20:
+                {
+                alt8=1;
+                }
+                break;
+            case 22:
+                {
+                alt8=2;
+                }
+                break;
+            case 16:
+            case 18:
+            case 19:
+            case 21:
+            case 166:
+            case 167:
+                {
+                alt8=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 8, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt8) {
+                case 1 :
+                    // InternalEntityGrammar.g:3609:2: ( ( rule__EntityFeature__Group_2_1_1_0__0 ) )
+                    {
+                    // InternalEntityGrammar.g:3609:2: ( ( rule__EntityFeature__Group_2_1_1_0__0 ) )
+                    // InternalEntityGrammar.g:3610:3: ( rule__EntityFeature__Group_2_1_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0()); 
                     }
-                    // InternalEntityGrammar.g:3590:3: ( rule__EntityFeature__Group_2_1_1_0__0 )
-                    // InternalEntityGrammar.g:3590:4: rule__EntityFeature__Group_2_1_1_0__0
+                    // InternalEntityGrammar.g:3611:3: ( rule__EntityFeature__Group_2_1_1_0__0 )
+                    // InternalEntityGrammar.g:3611:4: rule__EntityFeature__Group_2_1_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_0__0();
@@ -12389,16 +12494,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3594:2: ( ( rule__EntityFeature__Group_2_1_1_1__0 ) )
+                    // InternalEntityGrammar.g:3615:2: ( ( rule__EntityFeature__Group_2_1_1_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:3594:2: ( ( rule__EntityFeature__Group_2_1_1_1__0 ) )
-                    // InternalEntityGrammar.g:3595:3: ( rule__EntityFeature__Group_2_1_1_1__0 )
+                    // InternalEntityGrammar.g:3615:2: ( ( rule__EntityFeature__Group_2_1_1_1__0 ) )
+                    // InternalEntityGrammar.g:3616:3: ( rule__EntityFeature__Group_2_1_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1()); 
                     }
-                    // InternalEntityGrammar.g:3596:3: ( rule__EntityFeature__Group_2_1_1_1__0 )
-                    // InternalEntityGrammar.g:3596:4: rule__EntityFeature__Group_2_1_1_1__0
+                    // InternalEntityGrammar.g:3617:3: ( rule__EntityFeature__Group_2_1_1_1__0 )
+                    // InternalEntityGrammar.g:3617:4: rule__EntityFeature__Group_2_1_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_1__0();
@@ -12418,16 +12523,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3600:2: ( ( rule__EntityFeature__Group_2_1_1_2__0 ) )
+                    // InternalEntityGrammar.g:3621:2: ( ( rule__EntityFeature__Group_2_1_1_2__0 ) )
                     {
-                    // InternalEntityGrammar.g:3600:2: ( ( rule__EntityFeature__Group_2_1_1_2__0 ) )
-                    // InternalEntityGrammar.g:3601:3: ( rule__EntityFeature__Group_2_1_1_2__0 )
+                    // InternalEntityGrammar.g:3621:2: ( ( rule__EntityFeature__Group_2_1_1_2__0 ) )
+                    // InternalEntityGrammar.g:3622:3: ( rule__EntityFeature__Group_2_1_1_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2()); 
                     }
-                    // InternalEntityGrammar.g:3602:3: ( rule__EntityFeature__Group_2_1_1_2__0 )
-                    // InternalEntityGrammar.g:3602:4: rule__EntityFeature__Group_2_1_1_2__0
+                    // InternalEntityGrammar.g:3623:3: ( rule__EntityFeature__Group_2_1_1_2__0 )
+                    // InternalEntityGrammar.g:3623:4: rule__EntityFeature__Group_2_1_1_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_2__0();
@@ -12464,59 +12569,59 @@
 
 
     // $ANTLR start "rule__EntityFeature__Alternatives_2_1_1_2_0"
-    // InternalEntityGrammar.g:3610:1: rule__EntityFeature__Alternatives_2_1_1_2_0 : ( ( 'var' ) | ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) ) | ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) ) | ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) ) | ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) ) | ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) ) );
+    // InternalEntityGrammar.g:3631:1: rule__EntityFeature__Alternatives_2_1_1_2_0 : ( ( 'var' ) | ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) ) | ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) ) | ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) ) | ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) ) | ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) ) );
     public final void rule__EntityFeature__Alternatives_2_1_1_2_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3614:1: ( ( 'var' ) | ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) ) | ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) ) | ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) ) | ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) ) | ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) ) )
-            int alt8=6;
+            // InternalEntityGrammar.g:3635:1: ( ( 'var' ) | ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) ) | ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) ) | ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) ) | ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) ) | ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) ) )
+            int alt9=6;
             switch ( input.LA(1) ) {
             case 16:
                 {
-                alt8=1;
+                alt9=1;
                 }
                 break;
             case 18:
                 {
-                alt8=2;
+                alt9=2;
                 }
                 break;
             case 19:
                 {
-                alt8=3;
+                alt9=3;
                 }
                 break;
             case 21:
                 {
-                alt8=4;
+                alt9=4;
                 }
                 break;
-            case 163:
+            case 166:
                 {
-                alt8=5;
+                alt9=5;
                 }
                 break;
-            case 164:
+            case 167:
                 {
-                alt8=6;
+                alt9=6;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 8, 0, input);
+                    new NoViableAltException("", 9, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt8) {
+            switch (alt9) {
                 case 1 :
-                    // InternalEntityGrammar.g:3615:2: ( 'var' )
+                    // InternalEntityGrammar.g:3636:2: ( 'var' )
                     {
-                    // InternalEntityGrammar.g:3615:2: ( 'var' )
-                    // InternalEntityGrammar.g:3616:3: 'var'
+                    // InternalEntityGrammar.g:3636:2: ( 'var' )
+                    // InternalEntityGrammar.g:3637:3: 'var'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getVarKeyword_2_1_1_2_0_0()); 
@@ -12532,16 +12637,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3621:2: ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) )
+                    // InternalEntityGrammar.g:3642:2: ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) )
                     {
-                    // InternalEntityGrammar.g:3621:2: ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) )
-                    // InternalEntityGrammar.g:3622:3: ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 )
+                    // InternalEntityGrammar.g:3642:2: ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) )
+                    // InternalEntityGrammar.g:3643:3: ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getIdAssignment_2_1_1_2_0_1()); 
                     }
-                    // InternalEntityGrammar.g:3623:3: ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 )
-                    // InternalEntityGrammar.g:3623:4: rule__EntityFeature__IdAssignment_2_1_1_2_0_1
+                    // InternalEntityGrammar.g:3644:3: ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 )
+                    // InternalEntityGrammar.g:3644:4: rule__EntityFeature__IdAssignment_2_1_1_2_0_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__IdAssignment_2_1_1_2_0_1();
@@ -12561,16 +12666,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3627:2: ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) )
+                    // InternalEntityGrammar.g:3648:2: ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) )
                     {
-                    // InternalEntityGrammar.g:3627:2: ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) )
-                    // InternalEntityGrammar.g:3628:3: ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 )
+                    // InternalEntityGrammar.g:3648:2: ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) )
+                    // InternalEntityGrammar.g:3649:3: ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getUuidAssignment_2_1_1_2_0_2()); 
                     }
-                    // InternalEntityGrammar.g:3629:3: ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 )
-                    // InternalEntityGrammar.g:3629:4: rule__EntityFeature__UuidAssignment_2_1_1_2_0_2
+                    // InternalEntityGrammar.g:3650:3: ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 )
+                    // InternalEntityGrammar.g:3650:4: rule__EntityFeature__UuidAssignment_2_1_1_2_0_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__UuidAssignment_2_1_1_2_0_2();
@@ -12590,16 +12695,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:3633:2: ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) )
+                    // InternalEntityGrammar.g:3654:2: ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) )
                     {
-                    // InternalEntityGrammar.g:3633:2: ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) )
-                    // InternalEntityGrammar.g:3634:3: ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 )
+                    // InternalEntityGrammar.g:3654:2: ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) )
+                    // InternalEntityGrammar.g:3655:3: ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getVersionAssignment_2_1_1_2_0_3()); 
                     }
-                    // InternalEntityGrammar.g:3635:3: ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 )
-                    // InternalEntityGrammar.g:3635:4: rule__EntityFeature__VersionAssignment_2_1_1_2_0_3
+                    // InternalEntityGrammar.g:3656:3: ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 )
+                    // InternalEntityGrammar.g:3656:4: rule__EntityFeature__VersionAssignment_2_1_1_2_0_3
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__VersionAssignment_2_1_1_2_0_3();
@@ -12619,16 +12724,16 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:3639:2: ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) )
+                    // InternalEntityGrammar.g:3660:2: ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) )
                     {
-                    // InternalEntityGrammar.g:3639:2: ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) )
-                    // InternalEntityGrammar.g:3640:3: ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 )
+                    // InternalEntityGrammar.g:3660:2: ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) )
+                    // InternalEntityGrammar.g:3661:3: ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getDomainDescriptionAssignment_2_1_1_2_0_4()); 
                     }
-                    // InternalEntityGrammar.g:3641:3: ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 )
-                    // InternalEntityGrammar.g:3641:4: rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4
+                    // InternalEntityGrammar.g:3662:3: ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 )
+                    // InternalEntityGrammar.g:3662:4: rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4();
@@ -12648,16 +12753,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:3645:2: ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) )
+                    // InternalEntityGrammar.g:3666:2: ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) )
                     {
-                    // InternalEntityGrammar.g:3645:2: ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) )
-                    // InternalEntityGrammar.g:3646:3: ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 )
+                    // InternalEntityGrammar.g:3666:2: ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) )
+                    // InternalEntityGrammar.g:3667:3: ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getDomainKeyAssignment_2_1_1_2_0_5()); 
                     }
-                    // InternalEntityGrammar.g:3647:3: ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 )
-                    // InternalEntityGrammar.g:3647:4: rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5
+                    // InternalEntityGrammar.g:3668:3: ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 )
+                    // InternalEntityGrammar.g:3668:4: rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5();
@@ -12694,41 +12799,41 @@
 
 
     // $ANTLR start "rule__EntityFeature__Alternatives_2_1_1_2_2"
-    // InternalEntityGrammar.g:3655:1: rule__EntityFeature__Alternatives_2_1_1_2_2 : ( ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0 ) ) | ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1 ) ) );
+    // InternalEntityGrammar.g:3676:1: rule__EntityFeature__Alternatives_2_1_1_2_2 : ( ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0 ) ) | ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1 ) ) );
     public final void rule__EntityFeature__Alternatives_2_1_1_2_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3659:1: ( ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0 ) ) | ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1 ) ) )
-            int alt9=2;
-            int LA9_0 = input.LA(1);
+            // InternalEntityGrammar.g:3680:1: ( ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0 ) ) | ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1 ) ) )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
 
-            if ( (LA9_0==130) ) {
-                alt9=1;
+            if ( (LA10_0==130) ) {
+                alt10=1;
             }
-            else if ( (LA9_0==165) ) {
-                alt9=2;
+            else if ( (LA10_0==168) ) {
+                alt10=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 9, 0, input);
+                    new NoViableAltException("", 10, 0, input);
 
                 throw nvae;
             }
-            switch (alt9) {
+            switch (alt10) {
                 case 1 :
-                    // InternalEntityGrammar.g:3660:2: ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0 ) )
+                    // InternalEntityGrammar.g:3681:2: ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0 ) )
                     {
-                    // InternalEntityGrammar.g:3660:2: ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0 ) )
-                    // InternalEntityGrammar.g:3661:3: ( rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0 )
+                    // InternalEntityGrammar.g:3681:2: ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0 ) )
+                    // InternalEntityGrammar.g:3682:3: ( rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getFilteringAssignment_2_1_1_2_2_0()); 
                     }
-                    // InternalEntityGrammar.g:3662:3: ( rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0 )
-                    // InternalEntityGrammar.g:3662:4: rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0
+                    // InternalEntityGrammar.g:3683:3: ( rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0 )
+                    // InternalEntityGrammar.g:3683:4: rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__FilteringAssignment_2_1_1_2_2_0();
@@ -12748,16 +12853,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3666:2: ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1 ) )
+                    // InternalEntityGrammar.g:3687:2: ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1 ) )
                     {
-                    // InternalEntityGrammar.g:3666:2: ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1 ) )
-                    // InternalEntityGrammar.g:3667:3: ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1 )
+                    // InternalEntityGrammar.g:3687:2: ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1 ) )
+                    // InternalEntityGrammar.g:3688:3: ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getRangeFilteringAssignment_2_1_1_2_2_1()); 
                     }
-                    // InternalEntityGrammar.g:3668:3: ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1 )
-                    // InternalEntityGrammar.g:3668:4: rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1
+                    // InternalEntityGrammar.g:3689:3: ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1 )
+                    // InternalEntityGrammar.g:3689:4: rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_2_1();
@@ -12794,18 +12899,18 @@
 
 
     // $ANTLR start "rule__BeanFeature__Alternatives_2"
-    // InternalEntityGrammar.g:3676:1: rule__BeanFeature__Alternatives_2 : ( ( ( rule__BeanFeature__Group_2_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1__0 ) ) | ( ( rule__BeanFeature__Group_2_2__0 ) ) );
+    // InternalEntityGrammar.g:3697:1: rule__BeanFeature__Alternatives_2 : ( ( ( rule__BeanFeature__Group_2_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1__0 ) ) | ( ( rule__BeanFeature__Group_2_2__0 ) ) );
     public final void rule__BeanFeature__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3680:1: ( ( ( rule__BeanFeature__Group_2_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1__0 ) ) | ( ( rule__BeanFeature__Group_2_2__0 ) ) )
-            int alt10=3;
+            // InternalEntityGrammar.g:3701:1: ( ( ( rule__BeanFeature__Group_2_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1__0 ) ) | ( ( rule__BeanFeature__Group_2_2__0 ) ) )
+            int alt11=3;
             switch ( input.LA(1) ) {
             case 31:
                 {
-                alt10=1;
+                alt11=1;
                 }
                 break;
             case 16:
@@ -12813,34 +12918,34 @@
             case 20:
             case 21:
                 {
-                alt10=2;
+                alt11=2;
                 }
                 break;
             case 103:
                 {
-                alt10=3;
+                alt11=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 10, 0, input);
+                    new NoViableAltException("", 11, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt10) {
+            switch (alt11) {
                 case 1 :
-                    // InternalEntityGrammar.g:3681:2: ( ( rule__BeanFeature__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:3702:2: ( ( rule__BeanFeature__Group_2_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:3681:2: ( ( rule__BeanFeature__Group_2_0__0 ) )
-                    // InternalEntityGrammar.g:3682:3: ( rule__BeanFeature__Group_2_0__0 )
+                    // InternalEntityGrammar.g:3702:2: ( ( rule__BeanFeature__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:3703:3: ( rule__BeanFeature__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getGroup_2_0()); 
                     }
-                    // InternalEntityGrammar.g:3683:3: ( rule__BeanFeature__Group_2_0__0 )
-                    // InternalEntityGrammar.g:3683:4: rule__BeanFeature__Group_2_0__0
+                    // InternalEntityGrammar.g:3704:3: ( rule__BeanFeature__Group_2_0__0 )
+                    // InternalEntityGrammar.g:3704:4: rule__BeanFeature__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__Group_2_0__0();
@@ -12860,16 +12965,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3687:2: ( ( rule__BeanFeature__Group_2_1__0 ) )
+                    // InternalEntityGrammar.g:3708:2: ( ( rule__BeanFeature__Group_2_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:3687:2: ( ( rule__BeanFeature__Group_2_1__0 ) )
-                    // InternalEntityGrammar.g:3688:3: ( rule__BeanFeature__Group_2_1__0 )
+                    // InternalEntityGrammar.g:3708:2: ( ( rule__BeanFeature__Group_2_1__0 ) )
+                    // InternalEntityGrammar.g:3709:3: ( rule__BeanFeature__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getGroup_2_1()); 
                     }
-                    // InternalEntityGrammar.g:3689:3: ( rule__BeanFeature__Group_2_1__0 )
-                    // InternalEntityGrammar.g:3689:4: rule__BeanFeature__Group_2_1__0
+                    // InternalEntityGrammar.g:3710:3: ( rule__BeanFeature__Group_2_1__0 )
+                    // InternalEntityGrammar.g:3710:4: rule__BeanFeature__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__Group_2_1__0();
@@ -12889,16 +12994,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3693:2: ( ( rule__BeanFeature__Group_2_2__0 ) )
+                    // InternalEntityGrammar.g:3714:2: ( ( rule__BeanFeature__Group_2_2__0 ) )
                     {
-                    // InternalEntityGrammar.g:3693:2: ( ( rule__BeanFeature__Group_2_2__0 ) )
-                    // InternalEntityGrammar.g:3694:3: ( rule__BeanFeature__Group_2_2__0 )
+                    // InternalEntityGrammar.g:3714:2: ( ( rule__BeanFeature__Group_2_2__0 ) )
+                    // InternalEntityGrammar.g:3715:3: ( rule__BeanFeature__Group_2_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getGroup_2_2()); 
                     }
-                    // InternalEntityGrammar.g:3695:3: ( rule__BeanFeature__Group_2_2__0 )
-                    // InternalEntityGrammar.g:3695:4: rule__BeanFeature__Group_2_2__0
+                    // InternalEntityGrammar.g:3716:3: ( rule__BeanFeature__Group_2_2__0 )
+                    // InternalEntityGrammar.g:3716:4: rule__BeanFeature__Group_2_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__Group_2_2__0();
@@ -12934,42 +13039,142 @@
     // $ANTLR end "rule__BeanFeature__Alternatives_2"
 
 
+    // $ANTLR start "rule__BeanFeature__Alternatives_2_0_1_6_2"
+    // InternalEntityGrammar.g:3724:1: rule__BeanFeature__Alternatives_2_0_1_6_2 : ( ( ( rule__BeanFeature__AsGridAssignment_2_0_1_6_2_0 ) ) | ( ( rule__BeanFeature__AsTableAssignment_2_0_1_6_2_1 ) ) );
+    public final void rule__BeanFeature__Alternatives_2_0_1_6_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:3728:1: ( ( ( rule__BeanFeature__AsGridAssignment_2_0_1_6_2_0 ) ) | ( ( rule__BeanFeature__AsTableAssignment_2_0_1_6_2_1 ) ) )
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0==163) ) {
+                alt12=1;
+            }
+            else if ( (LA12_0==164) ) {
+                alt12=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 12, 0, input);
+
+                throw nvae;
+            }
+            switch (alt12) {
+                case 1 :
+                    // InternalEntityGrammar.g:3729:2: ( ( rule__BeanFeature__AsGridAssignment_2_0_1_6_2_0 ) )
+                    {
+                    // InternalEntityGrammar.g:3729:2: ( ( rule__BeanFeature__AsGridAssignment_2_0_1_6_2_0 ) )
+                    // InternalEntityGrammar.g:3730:3: ( rule__BeanFeature__AsGridAssignment_2_0_1_6_2_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getBeanFeatureAccess().getAsGridAssignment_2_0_1_6_2_0()); 
+                    }
+                    // InternalEntityGrammar.g:3731:3: ( rule__BeanFeature__AsGridAssignment_2_0_1_6_2_0 )
+                    // InternalEntityGrammar.g:3731:4: rule__BeanFeature__AsGridAssignment_2_0_1_6_2_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__BeanFeature__AsGridAssignment_2_0_1_6_2_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getBeanFeatureAccess().getAsGridAssignment_2_0_1_6_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalEntityGrammar.g:3735:2: ( ( rule__BeanFeature__AsTableAssignment_2_0_1_6_2_1 ) )
+                    {
+                    // InternalEntityGrammar.g:3735:2: ( ( rule__BeanFeature__AsTableAssignment_2_0_1_6_2_1 ) )
+                    // InternalEntityGrammar.g:3736:3: ( rule__BeanFeature__AsTableAssignment_2_0_1_6_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getBeanFeatureAccess().getAsTableAssignment_2_0_1_6_2_1()); 
+                    }
+                    // InternalEntityGrammar.g:3737:3: ( rule__BeanFeature__AsTableAssignment_2_0_1_6_2_1 )
+                    // InternalEntityGrammar.g:3737:4: rule__BeanFeature__AsTableAssignment_2_0_1_6_2_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__BeanFeature__AsTableAssignment_2_0_1_6_2_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getBeanFeatureAccess().getAsTableAssignment_2_0_1_6_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BeanFeature__Alternatives_2_0_1_6_2"
+
+
     // $ANTLR start "rule__BeanFeature__Alternatives_2_1_1"
-    // InternalEntityGrammar.g:3703:1: rule__BeanFeature__Alternatives_2_1_1 : ( ( ( rule__BeanFeature__Group_2_1_1_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1_1_1__0 ) ) );
+    // InternalEntityGrammar.g:3745:1: rule__BeanFeature__Alternatives_2_1_1 : ( ( ( rule__BeanFeature__Group_2_1_1_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1_1_1__0 ) ) );
     public final void rule__BeanFeature__Alternatives_2_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3707:1: ( ( ( rule__BeanFeature__Group_2_1_1_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1_1_1__0 ) ) )
-            int alt11=2;
-            int LA11_0 = input.LA(1);
+            // InternalEntityGrammar.g:3749:1: ( ( ( rule__BeanFeature__Group_2_1_1_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1_1_1__0 ) ) )
+            int alt13=2;
+            int LA13_0 = input.LA(1);
 
-            if ( (LA11_0==20) ) {
-                alt11=1;
+            if ( (LA13_0==20) ) {
+                alt13=1;
             }
-            else if ( (LA11_0==16||LA11_0==18||LA11_0==21) ) {
-                alt11=2;
+            else if ( (LA13_0==16||LA13_0==18||LA13_0==21) ) {
+                alt13=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 11, 0, input);
+                    new NoViableAltException("", 13, 0, input);
 
                 throw nvae;
             }
-            switch (alt11) {
+            switch (alt13) {
                 case 1 :
-                    // InternalEntityGrammar.g:3708:2: ( ( rule__BeanFeature__Group_2_1_1_0__0 ) )
+                    // InternalEntityGrammar.g:3750:2: ( ( rule__BeanFeature__Group_2_1_1_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:3708:2: ( ( rule__BeanFeature__Group_2_1_1_0__0 ) )
-                    // InternalEntityGrammar.g:3709:3: ( rule__BeanFeature__Group_2_1_1_0__0 )
+                    // InternalEntityGrammar.g:3750:2: ( ( rule__BeanFeature__Group_2_1_1_0__0 ) )
+                    // InternalEntityGrammar.g:3751:3: ( rule__BeanFeature__Group_2_1_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0()); 
                     }
-                    // InternalEntityGrammar.g:3710:3: ( rule__BeanFeature__Group_2_1_1_0__0 )
-                    // InternalEntityGrammar.g:3710:4: rule__BeanFeature__Group_2_1_1_0__0
+                    // InternalEntityGrammar.g:3752:3: ( rule__BeanFeature__Group_2_1_1_0__0 )
+                    // InternalEntityGrammar.g:3752:4: rule__BeanFeature__Group_2_1_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__Group_2_1_1_0__0();
@@ -12989,16 +13194,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3714:2: ( ( rule__BeanFeature__Group_2_1_1_1__0 ) )
+                    // InternalEntityGrammar.g:3756:2: ( ( rule__BeanFeature__Group_2_1_1_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:3714:2: ( ( rule__BeanFeature__Group_2_1_1_1__0 ) )
-                    // InternalEntityGrammar.g:3715:3: ( rule__BeanFeature__Group_2_1_1_1__0 )
+                    // InternalEntityGrammar.g:3756:2: ( ( rule__BeanFeature__Group_2_1_1_1__0 ) )
+                    // InternalEntityGrammar.g:3757:3: ( rule__BeanFeature__Group_2_1_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1()); 
                     }
-                    // InternalEntityGrammar.g:3716:3: ( rule__BeanFeature__Group_2_1_1_1__0 )
-                    // InternalEntityGrammar.g:3716:4: rule__BeanFeature__Group_2_1_1_1__0
+                    // InternalEntityGrammar.g:3758:3: ( rule__BeanFeature__Group_2_1_1_1__0 )
+                    // InternalEntityGrammar.g:3758:4: rule__BeanFeature__Group_2_1_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__Group_2_1_1_1__0();
@@ -13035,44 +13240,44 @@
 
 
     // $ANTLR start "rule__BeanFeature__Alternatives_2_1_1_1_0"
-    // InternalEntityGrammar.g:3724:1: rule__BeanFeature__Alternatives_2_1_1_1_0 : ( ( 'var' ) | ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) ) | ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) ) );
+    // InternalEntityGrammar.g:3766:1: rule__BeanFeature__Alternatives_2_1_1_1_0 : ( ( 'var' ) | ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) ) | ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) ) );
     public final void rule__BeanFeature__Alternatives_2_1_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3728:1: ( ( 'var' ) | ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) ) | ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) ) )
-            int alt12=3;
+            // InternalEntityGrammar.g:3770:1: ( ( 'var' ) | ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) ) | ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) ) )
+            int alt14=3;
             switch ( input.LA(1) ) {
             case 16:
                 {
-                alt12=1;
+                alt14=1;
                 }
                 break;
             case 18:
                 {
-                alt12=2;
+                alt14=2;
                 }
                 break;
             case 21:
                 {
-                alt12=3;
+                alt14=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 12, 0, input);
+                    new NoViableAltException("", 14, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt12) {
+            switch (alt14) {
                 case 1 :
-                    // InternalEntityGrammar.g:3729:2: ( 'var' )
+                    // InternalEntityGrammar.g:3771:2: ( 'var' )
                     {
-                    // InternalEntityGrammar.g:3729:2: ( 'var' )
-                    // InternalEntityGrammar.g:3730:3: 'var'
+                    // InternalEntityGrammar.g:3771:2: ( 'var' )
+                    // InternalEntityGrammar.g:3772:3: 'var'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getVarKeyword_2_1_1_1_0_0()); 
@@ -13088,16 +13293,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3735:2: ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) )
+                    // InternalEntityGrammar.g:3777:2: ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) )
                     {
-                    // InternalEntityGrammar.g:3735:2: ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) )
-                    // InternalEntityGrammar.g:3736:3: ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 )
+                    // InternalEntityGrammar.g:3777:2: ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) )
+                    // InternalEntityGrammar.g:3778:3: ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getIdAssignment_2_1_1_1_0_1()); 
                     }
-                    // InternalEntityGrammar.g:3737:3: ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 )
-                    // InternalEntityGrammar.g:3737:4: rule__BeanFeature__IdAssignment_2_1_1_1_0_1
+                    // InternalEntityGrammar.g:3779:3: ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 )
+                    // InternalEntityGrammar.g:3779:4: rule__BeanFeature__IdAssignment_2_1_1_1_0_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__IdAssignment_2_1_1_1_0_1();
@@ -13117,16 +13322,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3741:2: ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) )
+                    // InternalEntityGrammar.g:3783:2: ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) )
                     {
-                    // InternalEntityGrammar.g:3741:2: ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) )
-                    // InternalEntityGrammar.g:3742:3: ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 )
+                    // InternalEntityGrammar.g:3783:2: ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) )
+                    // InternalEntityGrammar.g:3784:3: ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getVersionAssignment_2_1_1_1_0_2()); 
                     }
-                    // InternalEntityGrammar.g:3743:3: ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 )
-                    // InternalEntityGrammar.g:3743:4: rule__BeanFeature__VersionAssignment_2_1_1_1_0_2
+                    // InternalEntityGrammar.g:3785:3: ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 )
+                    // InternalEntityGrammar.g:3785:4: rule__BeanFeature__VersionAssignment_2_1_1_1_0_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__VersionAssignment_2_1_1_1_0_2();
@@ -13163,41 +13368,41 @@
 
 
     // $ANTLR start "rule__BeanFeature__Alternatives_2_1_1_1_1"
-    // InternalEntityGrammar.g:3751:1: rule__BeanFeature__Alternatives_2_1_1_1_1 : ( ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) ) | ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) ) );
+    // InternalEntityGrammar.g:3793:1: rule__BeanFeature__Alternatives_2_1_1_1_1 : ( ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) ) | ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) ) );
     public final void rule__BeanFeature__Alternatives_2_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3755:1: ( ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) ) | ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) ) )
-            int alt13=2;
-            int LA13_0 = input.LA(1);
+            // InternalEntityGrammar.g:3797:1: ( ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) ) | ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) ) )
+            int alt15=2;
+            int LA15_0 = input.LA(1);
 
-            if ( (LA13_0==130) ) {
-                alt13=1;
+            if ( (LA15_0==130) ) {
+                alt15=1;
             }
-            else if ( (LA13_0==165) ) {
-                alt13=2;
+            else if ( (LA15_0==168) ) {
+                alt15=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 13, 0, input);
+                    new NoViableAltException("", 15, 0, input);
 
                 throw nvae;
             }
-            switch (alt13) {
+            switch (alt15) {
                 case 1 :
-                    // InternalEntityGrammar.g:3756:2: ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) )
+                    // InternalEntityGrammar.g:3798:2: ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) )
                     {
-                    // InternalEntityGrammar.g:3756:2: ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) )
-                    // InternalEntityGrammar.g:3757:3: ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 )
+                    // InternalEntityGrammar.g:3798:2: ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) )
+                    // InternalEntityGrammar.g:3799:3: ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getFilteringAssignment_2_1_1_1_1_0()); 
                     }
-                    // InternalEntityGrammar.g:3758:3: ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 )
-                    // InternalEntityGrammar.g:3758:4: rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0
+                    // InternalEntityGrammar.g:3800:3: ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 )
+                    // InternalEntityGrammar.g:3800:4: rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0();
@@ -13217,16 +13422,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3762:2: ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) )
+                    // InternalEntityGrammar.g:3804:2: ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) )
                     {
-                    // InternalEntityGrammar.g:3762:2: ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) )
-                    // InternalEntityGrammar.g:3763:3: ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 )
+                    // InternalEntityGrammar.g:3804:2: ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) )
+                    // InternalEntityGrammar.g:3805:3: ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getRangeFilteringAssignment_2_1_1_1_1_1()); 
                     }
-                    // InternalEntityGrammar.g:3764:3: ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 )
-                    // InternalEntityGrammar.g:3764:4: rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1
+                    // InternalEntityGrammar.g:3806:3: ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 )
+                    // InternalEntityGrammar.g:3806:4: rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1();
@@ -13263,35 +13468,35 @@
 
 
     // $ANTLR start "rule__EntityInheritanceStrategy__Alternatives"
-    // InternalEntityGrammar.g:3772:1: rule__EntityInheritanceStrategy__Alternatives : ( ( ruleTablePerClassStrategy ) | ( ruleTablePerSubclassStrategy ) );
+    // InternalEntityGrammar.g:3814:1: rule__EntityInheritanceStrategy__Alternatives : ( ( ruleTablePerClassStrategy ) | ( ruleTablePerSubclassStrategy ) );
     public final void rule__EntityInheritanceStrategy__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3776:1: ( ( ruleTablePerClassStrategy ) | ( ruleTablePerSubclassStrategy ) )
-            int alt14=2;
-            int LA14_0 = input.LA(1);
+            // InternalEntityGrammar.g:3818:1: ( ( ruleTablePerClassStrategy ) | ( ruleTablePerSubclassStrategy ) )
+            int alt16=2;
+            int LA16_0 = input.LA(1);
 
-            if ( (LA14_0==106) ) {
-                alt14=1;
+            if ( (LA16_0==106) ) {
+                alt16=1;
             }
-            else if ( (LA14_0==110) ) {
-                alt14=2;
+            else if ( (LA16_0==110) ) {
+                alt16=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 14, 0, input);
+                    new NoViableAltException("", 16, 0, input);
 
                 throw nvae;
             }
-            switch (alt14) {
+            switch (alt16) {
                 case 1 :
-                    // InternalEntityGrammar.g:3777:2: ( ruleTablePerClassStrategy )
+                    // InternalEntityGrammar.g:3819:2: ( ruleTablePerClassStrategy )
                     {
-                    // InternalEntityGrammar.g:3777:2: ( ruleTablePerClassStrategy )
-                    // InternalEntityGrammar.g:3778:3: ruleTablePerClassStrategy
+                    // InternalEntityGrammar.g:3819:2: ( ruleTablePerClassStrategy )
+                    // InternalEntityGrammar.g:3820:3: ruleTablePerClassStrategy
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityInheritanceStrategyAccess().getTablePerClassStrategyParserRuleCall_0()); 
@@ -13311,10 +13516,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3783:2: ( ruleTablePerSubclassStrategy )
+                    // InternalEntityGrammar.g:3825:2: ( ruleTablePerSubclassStrategy )
                     {
-                    // InternalEntityGrammar.g:3783:2: ( ruleTablePerSubclassStrategy )
-                    // InternalEntityGrammar.g:3784:3: ruleTablePerSubclassStrategy
+                    // InternalEntityGrammar.g:3825:2: ( ruleTablePerSubclassStrategy )
+                    // InternalEntityGrammar.g:3826:3: ruleTablePerSubclassStrategy
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityInheritanceStrategyAccess().getTablePerSubclassStrategyParserRuleCall_1()); 
@@ -13351,35 +13556,35 @@
 
 
     // $ANTLR start "rule__Type__Alternatives"
-    // InternalEntityGrammar.g:3793:1: rule__Type__Alternatives : ( ( ruleScalarType ) | ( ruleClass ) );
+    // InternalEntityGrammar.g:3835:1: rule__Type__Alternatives : ( ( ruleScalarType ) | ( ruleClass ) );
     public final void rule__Type__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3797:1: ( ( ruleScalarType ) | ( ruleClass ) )
-            int alt15=2;
-            int LA15_0 = input.LA(1);
+            // InternalEntityGrammar.g:3839:1: ( ( ruleScalarType ) | ( ruleClass ) )
+            int alt17=2;
+            int LA17_0 = input.LA(1);
 
-            if ( (LA15_0==111||LA15_0==129) ) {
-                alt15=1;
+            if ( (LA17_0==111||LA17_0==129) ) {
+                alt17=1;
             }
-            else if ( (LA15_0==87||LA15_0==93||LA15_0==134||(LA15_0>=157 && LA15_0<=161)) ) {
-                alt15=2;
+            else if ( (LA17_0==87||LA17_0==93||LA17_0==134||(LA17_0>=157 && LA17_0<=161)) ) {
+                alt17=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 15, 0, input);
+                    new NoViableAltException("", 17, 0, input);
 
                 throw nvae;
             }
-            switch (alt15) {
+            switch (alt17) {
                 case 1 :
-                    // InternalEntityGrammar.g:3798:2: ( ruleScalarType )
+                    // InternalEntityGrammar.g:3840:2: ( ruleScalarType )
                     {
-                    // InternalEntityGrammar.g:3798:2: ( ruleScalarType )
-                    // InternalEntityGrammar.g:3799:3: ruleScalarType
+                    // InternalEntityGrammar.g:3840:2: ( ruleScalarType )
+                    // InternalEntityGrammar.g:3841:3: ruleScalarType
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); 
@@ -13399,10 +13604,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3804:2: ( ruleClass )
+                    // InternalEntityGrammar.g:3846:2: ( ruleClass )
                     {
-                    // InternalEntityGrammar.g:3804:2: ( ruleClass )
-                    // InternalEntityGrammar.g:3805:3: ruleClass
+                    // InternalEntityGrammar.g:3846:2: ( ruleClass )
+                    // InternalEntityGrammar.g:3847:3: ruleClass
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); 
@@ -13439,50 +13644,50 @@
 
 
     // $ANTLR start "rule__DataType__Alternatives_2"
-    // InternalEntityGrammar.g:3814:1: rule__DataType__Alternatives_2 : ( ( ( rule__DataType__Group_2_0__0 ) ) | ( ( rule__DataType__Group_2_1__0 ) ) | ( ( rule__DataType__Group_2_2__0 ) ) );
+    // InternalEntityGrammar.g:3856:1: rule__DataType__Alternatives_2 : ( ( ( rule__DataType__Group_2_0__0 ) ) | ( ( rule__DataType__Group_2_1__0 ) ) | ( ( rule__DataType__Group_2_2__0 ) ) );
     public final void rule__DataType__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3818:1: ( ( ( rule__DataType__Group_2_0__0 ) ) | ( ( rule__DataType__Group_2_1__0 ) ) | ( ( rule__DataType__Group_2_2__0 ) ) )
-            int alt16=3;
+            // InternalEntityGrammar.g:3860:1: ( ( ( rule__DataType__Group_2_0__0 ) ) | ( ( rule__DataType__Group_2_1__0 ) ) | ( ( rule__DataType__Group_2_2__0 ) ) )
+            int alt18=3;
             switch ( input.LA(1) ) {
             case 112:
                 {
-                alt16=1;
+                alt18=1;
                 }
                 break;
-            case 171:
+            case 174:
                 {
-                alt16=2;
+                alt18=2;
                 }
                 break;
-            case 172:
+            case 175:
                 {
-                alt16=3;
+                alt18=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 16, 0, input);
+                    new NoViableAltException("", 18, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt16) {
+            switch (alt18) {
                 case 1 :
-                    // InternalEntityGrammar.g:3819:2: ( ( rule__DataType__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:3861:2: ( ( rule__DataType__Group_2_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:3819:2: ( ( rule__DataType__Group_2_0__0 ) )
-                    // InternalEntityGrammar.g:3820:3: ( rule__DataType__Group_2_0__0 )
+                    // InternalEntityGrammar.g:3861:2: ( ( rule__DataType__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:3862:3: ( rule__DataType__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeAccess().getGroup_2_0()); 
                     }
-                    // InternalEntityGrammar.g:3821:3: ( rule__DataType__Group_2_0__0 )
-                    // InternalEntityGrammar.g:3821:4: rule__DataType__Group_2_0__0
+                    // InternalEntityGrammar.g:3863:3: ( rule__DataType__Group_2_0__0 )
+                    // InternalEntityGrammar.g:3863:4: rule__DataType__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__DataType__Group_2_0__0();
@@ -13502,16 +13707,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3825:2: ( ( rule__DataType__Group_2_1__0 ) )
+                    // InternalEntityGrammar.g:3867:2: ( ( rule__DataType__Group_2_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:3825:2: ( ( rule__DataType__Group_2_1__0 ) )
-                    // InternalEntityGrammar.g:3826:3: ( rule__DataType__Group_2_1__0 )
+                    // InternalEntityGrammar.g:3867:2: ( ( rule__DataType__Group_2_1__0 ) )
+                    // InternalEntityGrammar.g:3868:3: ( rule__DataType__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeAccess().getGroup_2_1()); 
                     }
-                    // InternalEntityGrammar.g:3827:3: ( rule__DataType__Group_2_1__0 )
-                    // InternalEntityGrammar.g:3827:4: rule__DataType__Group_2_1__0
+                    // InternalEntityGrammar.g:3869:3: ( rule__DataType__Group_2_1__0 )
+                    // InternalEntityGrammar.g:3869:4: rule__DataType__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__DataType__Group_2_1__0();
@@ -13531,16 +13736,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3831:2: ( ( rule__DataType__Group_2_2__0 ) )
+                    // InternalEntityGrammar.g:3873:2: ( ( rule__DataType__Group_2_2__0 ) )
                     {
-                    // InternalEntityGrammar.g:3831:2: ( ( rule__DataType__Group_2_2__0 ) )
-                    // InternalEntityGrammar.g:3832:3: ( rule__DataType__Group_2_2__0 )
+                    // InternalEntityGrammar.g:3873:2: ( ( rule__DataType__Group_2_2__0 ) )
+                    // InternalEntityGrammar.g:3874:3: ( rule__DataType__Group_2_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeAccess().getGroup_2_2()); 
                     }
-                    // InternalEntityGrammar.g:3833:3: ( rule__DataType__Group_2_2__0 )
-                    // InternalEntityGrammar.g:3833:4: rule__DataType__Group_2_2__0
+                    // InternalEntityGrammar.g:3875:3: ( rule__DataType__Group_2_2__0 )
+                    // InternalEntityGrammar.g:3875:4: rule__DataType__Group_2_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__DataType__Group_2_2__0();
@@ -13577,94 +13782,94 @@
 
 
     // $ANTLR start "rule__AllConstraints__Alternatives"
-    // InternalEntityGrammar.g:3841:1: rule__AllConstraints__Alternatives : ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) | ( ruleDtCFuture ) | ( ruleDtCPast ) );
+    // InternalEntityGrammar.g:3883:1: rule__AllConstraints__Alternatives : ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) | ( ruleDtCFuture ) | ( ruleDtCPast ) );
     public final void rule__AllConstraints__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3845:1: ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) | ( ruleDtCFuture ) | ( ruleDtCPast ) )
-            int alt17=13;
+            // InternalEntityGrammar.g:3887:1: ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) | ( ruleDtCFuture ) | ( ruleDtCPast ) )
+            int alt19=13;
             switch ( input.LA(1) ) {
             case 113:
                 {
-                alt17=1;
+                alt19=1;
                 }
                 break;
             case 117:
                 {
-                alt17=2;
+                alt19=2;
                 }
                 break;
             case 118:
                 {
-                alt17=3;
+                alt19=3;
                 }
                 break;
             case 119:
                 {
-                alt17=4;
+                alt19=4;
                 }
                 break;
             case 120:
                 {
-                alt17=5;
+                alt19=5;
                 }
                 break;
             case 123:
                 {
-                alt17=6;
+                alt19=6;
                 }
                 break;
             case 124:
                 {
-                alt17=7;
+                alt19=7;
                 }
                 break;
             case 125:
                 {
-                alt17=8;
+                alt19=8;
                 }
                 break;
             case 126:
                 {
-                alt17=9;
+                alt19=9;
                 }
                 break;
             case 127:
                 {
-                alt17=10;
+                alt19=10;
                 }
                 break;
             case 128:
                 {
-                alt17=11;
+                alt19=11;
                 }
                 break;
             case 121:
                 {
-                alt17=12;
+                alt19=12;
                 }
                 break;
             case 122:
                 {
-                alt17=13;
+                alt19=13;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 17, 0, input);
+                    new NoViableAltException("", 19, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt17) {
+            switch (alt19) {
                 case 1 :
-                    // InternalEntityGrammar.g:3846:2: ( ruleDtCAssertFalse )
+                    // InternalEntityGrammar.g:3888:2: ( ruleDtCAssertFalse )
                     {
-                    // InternalEntityGrammar.g:3846:2: ( ruleDtCAssertFalse )
-                    // InternalEntityGrammar.g:3847:3: ruleDtCAssertFalse
+                    // InternalEntityGrammar.g:3888:2: ( ruleDtCAssertFalse )
+                    // InternalEntityGrammar.g:3889:3: ruleDtCAssertFalse
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCAssertFalseParserRuleCall_0()); 
@@ -13684,10 +13889,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3852:2: ( ruleDtCAssertTrue )
+                    // InternalEntityGrammar.g:3894:2: ( ruleDtCAssertTrue )
                     {
-                    // InternalEntityGrammar.g:3852:2: ( ruleDtCAssertTrue )
-                    // InternalEntityGrammar.g:3853:3: ruleDtCAssertTrue
+                    // InternalEntityGrammar.g:3894:2: ( ruleDtCAssertTrue )
+                    // InternalEntityGrammar.g:3895:3: ruleDtCAssertTrue
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCAssertTrueParserRuleCall_1()); 
@@ -13707,10 +13912,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3858:2: ( ruleDtCDecimalMax )
+                    // InternalEntityGrammar.g:3900:2: ( ruleDtCDecimalMax )
                     {
-                    // InternalEntityGrammar.g:3858:2: ( ruleDtCDecimalMax )
-                    // InternalEntityGrammar.g:3859:3: ruleDtCDecimalMax
+                    // InternalEntityGrammar.g:3900:2: ( ruleDtCDecimalMax )
+                    // InternalEntityGrammar.g:3901:3: ruleDtCDecimalMax
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCDecimalMaxParserRuleCall_2()); 
@@ -13730,10 +13935,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:3864:2: ( ruleDtCDecimalMin )
+                    // InternalEntityGrammar.g:3906:2: ( ruleDtCDecimalMin )
                     {
-                    // InternalEntityGrammar.g:3864:2: ( ruleDtCDecimalMin )
-                    // InternalEntityGrammar.g:3865:3: ruleDtCDecimalMin
+                    // InternalEntityGrammar.g:3906:2: ( ruleDtCDecimalMin )
+                    // InternalEntityGrammar.g:3907:3: ruleDtCDecimalMin
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCDecimalMinParserRuleCall_3()); 
@@ -13753,10 +13958,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:3870:2: ( ruleDtCDigits )
+                    // InternalEntityGrammar.g:3912:2: ( ruleDtCDigits )
                     {
-                    // InternalEntityGrammar.g:3870:2: ( ruleDtCDigits )
-                    // InternalEntityGrammar.g:3871:3: ruleDtCDigits
+                    // InternalEntityGrammar.g:3912:2: ( ruleDtCDigits )
+                    // InternalEntityGrammar.g:3913:3: ruleDtCDigits
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCDigitsParserRuleCall_4()); 
@@ -13776,10 +13981,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:3876:2: ( ruleDtCNumericMax )
+                    // InternalEntityGrammar.g:3918:2: ( ruleDtCNumericMax )
                     {
-                    // InternalEntityGrammar.g:3876:2: ( ruleDtCNumericMax )
-                    // InternalEntityGrammar.g:3877:3: ruleDtCNumericMax
+                    // InternalEntityGrammar.g:3918:2: ( ruleDtCNumericMax )
+                    // InternalEntityGrammar.g:3919:3: ruleDtCNumericMax
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCNumericMaxParserRuleCall_5()); 
@@ -13799,10 +14004,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalEntityGrammar.g:3882:2: ( ruleDtCNumericMin )
+                    // InternalEntityGrammar.g:3924:2: ( ruleDtCNumericMin )
                     {
-                    // InternalEntityGrammar.g:3882:2: ( ruleDtCNumericMin )
-                    // InternalEntityGrammar.g:3883:3: ruleDtCNumericMin
+                    // InternalEntityGrammar.g:3924:2: ( ruleDtCNumericMin )
+                    // InternalEntityGrammar.g:3925:3: ruleDtCNumericMin
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCNumericMinParserRuleCall_6()); 
@@ -13822,10 +14027,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalEntityGrammar.g:3888:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:3930:2: ( ruleDtCNotNull )
                     {
-                    // InternalEntityGrammar.g:3888:2: ( ruleDtCNotNull )
-                    // InternalEntityGrammar.g:3889:3: ruleDtCNotNull
+                    // InternalEntityGrammar.g:3930:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:3931:3: ruleDtCNotNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCNotNullParserRuleCall_7()); 
@@ -13845,10 +14050,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalEntityGrammar.g:3894:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:3936:2: ( ruleDtCNull )
                     {
-                    // InternalEntityGrammar.g:3894:2: ( ruleDtCNull )
-                    // InternalEntityGrammar.g:3895:3: ruleDtCNull
+                    // InternalEntityGrammar.g:3936:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:3937:3: ruleDtCNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCNullParserRuleCall_8()); 
@@ -13868,10 +14073,10 @@
                     }
                     break;
                 case 10 :
-                    // InternalEntityGrammar.g:3900:2: ( ruleDtCRegEx )
+                    // InternalEntityGrammar.g:3942:2: ( ruleDtCRegEx )
                     {
-                    // InternalEntityGrammar.g:3900:2: ( ruleDtCRegEx )
-                    // InternalEntityGrammar.g:3901:3: ruleDtCRegEx
+                    // InternalEntityGrammar.g:3942:2: ( ruleDtCRegEx )
+                    // InternalEntityGrammar.g:3943:3: ruleDtCRegEx
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCRegExParserRuleCall_9()); 
@@ -13891,10 +14096,10 @@
                     }
                     break;
                 case 11 :
-                    // InternalEntityGrammar.g:3906:2: ( ruleDtCSize )
+                    // InternalEntityGrammar.g:3948:2: ( ruleDtCSize )
                     {
-                    // InternalEntityGrammar.g:3906:2: ( ruleDtCSize )
-                    // InternalEntityGrammar.g:3907:3: ruleDtCSize
+                    // InternalEntityGrammar.g:3948:2: ( ruleDtCSize )
+                    // InternalEntityGrammar.g:3949:3: ruleDtCSize
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCSizeParserRuleCall_10()); 
@@ -13914,10 +14119,10 @@
                     }
                     break;
                 case 12 :
-                    // InternalEntityGrammar.g:3912:2: ( ruleDtCFuture )
+                    // InternalEntityGrammar.g:3954:2: ( ruleDtCFuture )
                     {
-                    // InternalEntityGrammar.g:3912:2: ( ruleDtCFuture )
-                    // InternalEntityGrammar.g:3913:3: ruleDtCFuture
+                    // InternalEntityGrammar.g:3954:2: ( ruleDtCFuture )
+                    // InternalEntityGrammar.g:3955:3: ruleDtCFuture
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCFutureParserRuleCall_11()); 
@@ -13937,10 +14142,10 @@
                     }
                     break;
                 case 13 :
-                    // InternalEntityGrammar.g:3918:2: ( ruleDtCPast )
+                    // InternalEntityGrammar.g:3960:2: ( ruleDtCPast )
                     {
-                    // InternalEntityGrammar.g:3918:2: ( ruleDtCPast )
-                    // InternalEntityGrammar.g:3919:3: ruleDtCPast
+                    // InternalEntityGrammar.g:3960:2: ( ruleDtCPast )
+                    // InternalEntityGrammar.g:3961:3: ruleDtCPast
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCPastParserRuleCall_12()); 
@@ -13977,84 +14182,84 @@
 
 
     // $ANTLR start "rule__DataTypeConstraint__Alternatives"
-    // InternalEntityGrammar.g:3928:1: rule__DataTypeConstraint__Alternatives : ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) );
+    // InternalEntityGrammar.g:3970:1: rule__DataTypeConstraint__Alternatives : ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) );
     public final void rule__DataTypeConstraint__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3932:1: ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) )
-            int alt18=11;
+            // InternalEntityGrammar.g:3974:1: ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) )
+            int alt20=11;
             switch ( input.LA(1) ) {
             case 113:
                 {
-                alt18=1;
+                alt20=1;
                 }
                 break;
             case 117:
                 {
-                alt18=2;
+                alt20=2;
                 }
                 break;
             case 118:
                 {
-                alt18=3;
+                alt20=3;
                 }
                 break;
             case 119:
                 {
-                alt18=4;
+                alt20=4;
                 }
                 break;
             case 120:
                 {
-                alt18=5;
+                alt20=5;
                 }
                 break;
             case 123:
                 {
-                alt18=6;
+                alt20=6;
                 }
                 break;
             case 124:
                 {
-                alt18=7;
+                alt20=7;
                 }
                 break;
             case 125:
                 {
-                alt18=8;
+                alt20=8;
                 }
                 break;
             case 126:
                 {
-                alt18=9;
+                alt20=9;
                 }
                 break;
             case 127:
                 {
-                alt18=10;
+                alt20=10;
                 }
                 break;
             case 128:
                 {
-                alt18=11;
+                alt20=11;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 18, 0, input);
+                    new NoViableAltException("", 20, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt18) {
+            switch (alt20) {
                 case 1 :
-                    // InternalEntityGrammar.g:3933:2: ( ruleDtCAssertFalse )
+                    // InternalEntityGrammar.g:3975:2: ( ruleDtCAssertFalse )
                     {
-                    // InternalEntityGrammar.g:3933:2: ( ruleDtCAssertFalse )
-                    // InternalEntityGrammar.g:3934:3: ruleDtCAssertFalse
+                    // InternalEntityGrammar.g:3975:2: ( ruleDtCAssertFalse )
+                    // InternalEntityGrammar.g:3976:3: ruleDtCAssertFalse
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); 
@@ -14074,10 +14279,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3939:2: ( ruleDtCAssertTrue )
+                    // InternalEntityGrammar.g:3981:2: ( ruleDtCAssertTrue )
                     {
-                    // InternalEntityGrammar.g:3939:2: ( ruleDtCAssertTrue )
-                    // InternalEntityGrammar.g:3940:3: ruleDtCAssertTrue
+                    // InternalEntityGrammar.g:3981:2: ( ruleDtCAssertTrue )
+                    // InternalEntityGrammar.g:3982:3: ruleDtCAssertTrue
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); 
@@ -14097,10 +14302,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3945:2: ( ruleDtCDecimalMax )
+                    // InternalEntityGrammar.g:3987:2: ( ruleDtCDecimalMax )
                     {
-                    // InternalEntityGrammar.g:3945:2: ( ruleDtCDecimalMax )
-                    // InternalEntityGrammar.g:3946:3: ruleDtCDecimalMax
+                    // InternalEntityGrammar.g:3987:2: ( ruleDtCDecimalMax )
+                    // InternalEntityGrammar.g:3988:3: ruleDtCDecimalMax
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); 
@@ -14120,10 +14325,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:3951:2: ( ruleDtCDecimalMin )
+                    // InternalEntityGrammar.g:3993:2: ( ruleDtCDecimalMin )
                     {
-                    // InternalEntityGrammar.g:3951:2: ( ruleDtCDecimalMin )
-                    // InternalEntityGrammar.g:3952:3: ruleDtCDecimalMin
+                    // InternalEntityGrammar.g:3993:2: ( ruleDtCDecimalMin )
+                    // InternalEntityGrammar.g:3994:3: ruleDtCDecimalMin
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); 
@@ -14143,10 +14348,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:3957:2: ( ruleDtCDigits )
+                    // InternalEntityGrammar.g:3999:2: ( ruleDtCDigits )
                     {
-                    // InternalEntityGrammar.g:3957:2: ( ruleDtCDigits )
-                    // InternalEntityGrammar.g:3958:3: ruleDtCDigits
+                    // InternalEntityGrammar.g:3999:2: ( ruleDtCDigits )
+                    // InternalEntityGrammar.g:4000:3: ruleDtCDigits
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); 
@@ -14166,10 +14371,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:3963:2: ( ruleDtCNumericMax )
+                    // InternalEntityGrammar.g:4005:2: ( ruleDtCNumericMax )
                     {
-                    // InternalEntityGrammar.g:3963:2: ( ruleDtCNumericMax )
-                    // InternalEntityGrammar.g:3964:3: ruleDtCNumericMax
+                    // InternalEntityGrammar.g:4005:2: ( ruleDtCNumericMax )
+                    // InternalEntityGrammar.g:4006:3: ruleDtCNumericMax
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); 
@@ -14189,10 +14394,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalEntityGrammar.g:3969:2: ( ruleDtCNumericMin )
+                    // InternalEntityGrammar.g:4011:2: ( ruleDtCNumericMin )
                     {
-                    // InternalEntityGrammar.g:3969:2: ( ruleDtCNumericMin )
-                    // InternalEntityGrammar.g:3970:3: ruleDtCNumericMin
+                    // InternalEntityGrammar.g:4011:2: ( ruleDtCNumericMin )
+                    // InternalEntityGrammar.g:4012:3: ruleDtCNumericMin
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); 
@@ -14212,10 +14417,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalEntityGrammar.g:3975:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4017:2: ( ruleDtCNotNull )
                     {
-                    // InternalEntityGrammar.g:3975:2: ( ruleDtCNotNull )
-                    // InternalEntityGrammar.g:3976:3: ruleDtCNotNull
+                    // InternalEntityGrammar.g:4017:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4018:3: ruleDtCNotNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); 
@@ -14235,10 +14440,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalEntityGrammar.g:3981:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4023:2: ( ruleDtCNull )
                     {
-                    // InternalEntityGrammar.g:3981:2: ( ruleDtCNull )
-                    // InternalEntityGrammar.g:3982:3: ruleDtCNull
+                    // InternalEntityGrammar.g:4023:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4024:3: ruleDtCNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); 
@@ -14258,10 +14463,10 @@
                     }
                     break;
                 case 10 :
-                    // InternalEntityGrammar.g:3987:2: ( ruleDtCRegEx )
+                    // InternalEntityGrammar.g:4029:2: ( ruleDtCRegEx )
                     {
-                    // InternalEntityGrammar.g:3987:2: ( ruleDtCRegEx )
-                    // InternalEntityGrammar.g:3988:3: ruleDtCRegEx
+                    // InternalEntityGrammar.g:4029:2: ( ruleDtCRegEx )
+                    // InternalEntityGrammar.g:4030:3: ruleDtCRegEx
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); 
@@ -14281,10 +14486,10 @@
                     }
                     break;
                 case 11 :
-                    // InternalEntityGrammar.g:3993:2: ( ruleDtCSize )
+                    // InternalEntityGrammar.g:4035:2: ( ruleDtCSize )
                     {
-                    // InternalEntityGrammar.g:3993:2: ( ruleDtCSize )
-                    // InternalEntityGrammar.g:3994:3: ruleDtCSize
+                    // InternalEntityGrammar.g:4035:2: ( ruleDtCSize )
+                    // InternalEntityGrammar.g:4036:3: ruleDtCSize
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); 
@@ -14321,49 +14526,49 @@
 
 
     // $ANTLR start "rule__DateConstraint__Alternatives"
-    // InternalEntityGrammar.g:4003:1: rule__DateConstraint__Alternatives : ( ( ruleDtCFuture ) | ( ruleDtCPast ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) );
+    // InternalEntityGrammar.g:4045:1: rule__DateConstraint__Alternatives : ( ( ruleDtCFuture ) | ( ruleDtCPast ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) );
     public final void rule__DateConstraint__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4007:1: ( ( ruleDtCFuture ) | ( ruleDtCPast ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) )
-            int alt19=4;
+            // InternalEntityGrammar.g:4049:1: ( ( ruleDtCFuture ) | ( ruleDtCPast ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) )
+            int alt21=4;
             switch ( input.LA(1) ) {
             case 121:
                 {
-                alt19=1;
+                alt21=1;
                 }
                 break;
             case 122:
                 {
-                alt19=2;
+                alt21=2;
                 }
                 break;
             case 125:
                 {
-                alt19=3;
+                alt21=3;
                 }
                 break;
             case 126:
                 {
-                alt19=4;
+                alt21=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 19, 0, input);
+                    new NoViableAltException("", 21, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt19) {
+            switch (alt21) {
                 case 1 :
-                    // InternalEntityGrammar.g:4008:2: ( ruleDtCFuture )
+                    // InternalEntityGrammar.g:4050:2: ( ruleDtCFuture )
                     {
-                    // InternalEntityGrammar.g:4008:2: ( ruleDtCFuture )
-                    // InternalEntityGrammar.g:4009:3: ruleDtCFuture
+                    // InternalEntityGrammar.g:4050:2: ( ruleDtCFuture )
+                    // InternalEntityGrammar.g:4051:3: ruleDtCFuture
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); 
@@ -14383,10 +14588,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4014:2: ( ruleDtCPast )
+                    // InternalEntityGrammar.g:4056:2: ( ruleDtCPast )
                     {
-                    // InternalEntityGrammar.g:4014:2: ( ruleDtCPast )
-                    // InternalEntityGrammar.g:4015:3: ruleDtCPast
+                    // InternalEntityGrammar.g:4056:2: ( ruleDtCPast )
+                    // InternalEntityGrammar.g:4057:3: ruleDtCPast
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); 
@@ -14406,10 +14611,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4020:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4062:2: ( ruleDtCNotNull )
                     {
-                    // InternalEntityGrammar.g:4020:2: ( ruleDtCNotNull )
-                    // InternalEntityGrammar.g:4021:3: ruleDtCNotNull
+                    // InternalEntityGrammar.g:4062:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4063:3: ruleDtCNotNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); 
@@ -14429,10 +14634,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4026:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4068:2: ( ruleDtCNull )
                     {
-                    // InternalEntityGrammar.g:4026:2: ( ruleDtCNull )
-                    // InternalEntityGrammar.g:4027:3: ruleDtCNull
+                    // InternalEntityGrammar.g:4068:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4069:3: ruleDtCNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); 
@@ -14469,35 +14674,35 @@
 
 
     // $ANTLR start "rule__BlobTypeConstraint__Alternatives"
-    // InternalEntityGrammar.g:4036:1: rule__BlobTypeConstraint__Alternatives : ( ( ruleDtCNotNull ) | ( ruleDtCNull ) );
+    // InternalEntityGrammar.g:4078:1: rule__BlobTypeConstraint__Alternatives : ( ( ruleDtCNotNull ) | ( ruleDtCNull ) );
     public final void rule__BlobTypeConstraint__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4040:1: ( ( ruleDtCNotNull ) | ( ruleDtCNull ) )
-            int alt20=2;
-            int LA20_0 = input.LA(1);
+            // InternalEntityGrammar.g:4082:1: ( ( ruleDtCNotNull ) | ( ruleDtCNull ) )
+            int alt22=2;
+            int LA22_0 = input.LA(1);
 
-            if ( (LA20_0==125) ) {
-                alt20=1;
+            if ( (LA22_0==125) ) {
+                alt22=1;
             }
-            else if ( (LA20_0==126) ) {
-                alt20=2;
+            else if ( (LA22_0==126) ) {
+                alt22=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 20, 0, input);
+                    new NoViableAltException("", 22, 0, input);
 
                 throw nvae;
             }
-            switch (alt20) {
+            switch (alt22) {
                 case 1 :
-                    // InternalEntityGrammar.g:4041:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4083:2: ( ruleDtCNotNull )
                     {
-                    // InternalEntityGrammar.g:4041:2: ( ruleDtCNotNull )
-                    // InternalEntityGrammar.g:4042:3: ruleDtCNotNull
+                    // InternalEntityGrammar.g:4083:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4084:3: ruleDtCNotNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); 
@@ -14517,10 +14722,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4047:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4089:2: ( ruleDtCNull )
                     {
-                    // InternalEntityGrammar.g:4047:2: ( ruleDtCNull )
-                    // InternalEntityGrammar.g:4048:3: ruleDtCNull
+                    // InternalEntityGrammar.g:4089:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4090:3: ruleDtCNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); 
@@ -14557,35 +14762,35 @@
 
 
     // $ANTLR start "rule__ScalarType__Alternatives"
-    // InternalEntityGrammar.g:4057:1: rule__ScalarType__Alternatives : ( ( ruleDataType ) | ( ruleEnum ) );
+    // InternalEntityGrammar.g:4099:1: rule__ScalarType__Alternatives : ( ( ruleDataType ) | ( ruleEnum ) );
     public final void rule__ScalarType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4061:1: ( ( ruleDataType ) | ( ruleEnum ) )
-            int alt21=2;
-            int LA21_0 = input.LA(1);
+            // InternalEntityGrammar.g:4103:1: ( ( ruleDataType ) | ( ruleEnum ) )
+            int alt23=2;
+            int LA23_0 = input.LA(1);
 
-            if ( (LA21_0==111) ) {
-                alt21=1;
+            if ( (LA23_0==111) ) {
+                alt23=1;
             }
-            else if ( (LA21_0==129) ) {
-                alt21=2;
+            else if ( (LA23_0==129) ) {
+                alt23=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 21, 0, input);
+                    new NoViableAltException("", 23, 0, input);
 
                 throw nvae;
             }
-            switch (alt21) {
+            switch (alt23) {
                 case 1 :
-                    // InternalEntityGrammar.g:4062:2: ( ruleDataType )
+                    // InternalEntityGrammar.g:4104:2: ( ruleDataType )
                     {
-                    // InternalEntityGrammar.g:4062:2: ( ruleDataType )
-                    // InternalEntityGrammar.g:4063:3: ruleDataType
+                    // InternalEntityGrammar.g:4104:2: ( ruleDataType )
+                    // InternalEntityGrammar.g:4105:3: ruleDataType
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); 
@@ -14605,10 +14810,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4068:2: ( ruleEnum )
+                    // InternalEntityGrammar.g:4110:2: ( ruleEnum )
                     {
-                    // InternalEntityGrammar.g:4068:2: ( ruleEnum )
-                    // InternalEntityGrammar.g:4069:3: ruleEnum
+                    // InternalEntityGrammar.g:4110:2: ( ruleEnum )
+                    // InternalEntityGrammar.g:4111:3: ruleEnum
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); 
@@ -14645,41 +14850,41 @@
 
 
     // $ANTLR start "rule__AttributeMatchingConstraint__Alternatives_2"
-    // InternalEntityGrammar.g:4078:1: rule__AttributeMatchingConstraint__Alternatives_2 : ( ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) ) | ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) ) );
+    // InternalEntityGrammar.g:4120:1: rule__AttributeMatchingConstraint__Alternatives_2 : ( ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) ) | ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) ) );
     public final void rule__AttributeMatchingConstraint__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4082:1: ( ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) ) | ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) ) )
-            int alt22=2;
-            int LA22_0 = input.LA(1);
+            // InternalEntityGrammar.g:4124:1: ( ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) ) | ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) ) )
+            int alt24=2;
+            int LA24_0 = input.LA(1);
 
-            if ( (LA22_0==RULE_STRING) ) {
-                alt22=1;
+            if ( (LA24_0==RULE_STRING) ) {
+                alt24=1;
             }
-            else if ( (LA22_0==RULE_ID) ) {
-                alt22=2;
+            else if ( (LA24_0==RULE_ID) ) {
+                alt24=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 22, 0, input);
+                    new NoViableAltException("", 24, 0, input);
 
                 throw nvae;
             }
-            switch (alt22) {
+            switch (alt24) {
                 case 1 :
-                    // InternalEntityGrammar.g:4083:2: ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) )
+                    // InternalEntityGrammar.g:4125:2: ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) )
                     {
-                    // InternalEntityGrammar.g:4083:2: ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) )
-                    // InternalEntityGrammar.g:4084:3: ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 )
+                    // InternalEntityGrammar.g:4125:2: ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) )
+                    // InternalEntityGrammar.g:4126:3: ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0()); 
                     }
-                    // InternalEntityGrammar.g:4085:3: ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 )
-                    // InternalEntityGrammar.g:4085:4: rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0
+                    // InternalEntityGrammar.g:4127:3: ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 )
+                    // InternalEntityGrammar.g:4127:4: rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0();
@@ -14699,16 +14904,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4089:2: ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) )
+                    // InternalEntityGrammar.g:4131:2: ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) )
                     {
-                    // InternalEntityGrammar.g:4089:2: ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) )
-                    // InternalEntityGrammar.g:4090:3: ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 )
+                    // InternalEntityGrammar.g:4131:2: ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) )
+                    // InternalEntityGrammar.g:4132:3: ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1()); 
                     }
-                    // InternalEntityGrammar.g:4091:3: ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 )
-                    // InternalEntityGrammar.g:4091:4: rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1
+                    // InternalEntityGrammar.g:4133:3: ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 )
+                    // InternalEntityGrammar.g:4133:4: rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1();
@@ -14745,119 +14950,119 @@
 
 
     // $ANTLR start "rule__ValidIDWithKeywords__Alternatives"
-    // InternalEntityGrammar.g:4099:1: rule__ValidIDWithKeywords__Alternatives : ( ( 'cachable' ) | ( 'id' ) | ( 'uuid' ) | ( 'transient' ) | ( 'version' ) | ( 'derived' ) | ( 'collection' ) | ( 'refers' ) | ( 'settings' ) | ( 'lazy' ) | ( 'notnull' ) | ( 'dto' ) | ( 'date' ) | ( 'mapto' ) | ( 'ref' ) | ( 'cascade' ) | ( 'var' ) | ( RULE_ID ) );
+    // InternalEntityGrammar.g:4141:1: rule__ValidIDWithKeywords__Alternatives : ( ( 'cachable' ) | ( 'id' ) | ( 'uuid' ) | ( 'transient' ) | ( 'version' ) | ( 'derived' ) | ( 'collection' ) | ( 'refers' ) | ( 'settings' ) | ( 'lazy' ) | ( 'notnull' ) | ( 'dto' ) | ( 'date' ) | ( 'mapto' ) | ( 'ref' ) | ( 'cascade' ) | ( 'var' ) | ( RULE_ID ) );
     public final void rule__ValidIDWithKeywords__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4103:1: ( ( 'cachable' ) | ( 'id' ) | ( 'uuid' ) | ( 'transient' ) | ( 'version' ) | ( 'derived' ) | ( 'collection' ) | ( 'refers' ) | ( 'settings' ) | ( 'lazy' ) | ( 'notnull' ) | ( 'dto' ) | ( 'date' ) | ( 'mapto' ) | ( 'ref' ) | ( 'cascade' ) | ( 'var' ) | ( RULE_ID ) )
-            int alt23=18;
+            // InternalEntityGrammar.g:4145:1: ( ( 'cachable' ) | ( 'id' ) | ( 'uuid' ) | ( 'transient' ) | ( 'version' ) | ( 'derived' ) | ( 'collection' ) | ( 'refers' ) | ( 'settings' ) | ( 'lazy' ) | ( 'notnull' ) | ( 'dto' ) | ( 'date' ) | ( 'mapto' ) | ( 'ref' ) | ( 'cascade' ) | ( 'var' ) | ( RULE_ID ) )
+            int alt25=18;
             switch ( input.LA(1) ) {
             case 17:
                 {
-                alt23=1;
+                alt25=1;
                 }
                 break;
             case 18:
                 {
-                alt23=2;
+                alt25=2;
                 }
                 break;
             case 19:
                 {
-                alt23=3;
+                alt25=3;
                 }
                 break;
             case 20:
                 {
-                alt23=4;
+                alt25=4;
                 }
                 break;
             case 21:
                 {
-                alt23=5;
+                alt25=5;
                 }
                 break;
             case 22:
                 {
-                alt23=6;
+                alt25=6;
                 }
                 break;
             case 23:
                 {
-                alt23=7;
+                alt25=7;
                 }
                 break;
             case 24:
                 {
-                alt23=8;
+                alt25=8;
                 }
                 break;
             case 25:
                 {
-                alt23=9;
+                alt25=9;
                 }
                 break;
             case 26:
                 {
-                alt23=10;
+                alt25=10;
                 }
                 break;
             case 27:
                 {
-                alt23=11;
+                alt25=11;
                 }
                 break;
             case 28:
                 {
-                alt23=12;
+                alt25=12;
                 }
                 break;
             case 29:
                 {
-                alt23=13;
+                alt25=13;
                 }
                 break;
             case 30:
                 {
-                alt23=14;
+                alt25=14;
                 }
                 break;
             case 31:
                 {
-                alt23=15;
+                alt25=15;
                 }
                 break;
             case 32:
                 {
-                alt23=16;
+                alt25=16;
                 }
                 break;
             case 16:
                 {
-                alt23=17;
+                alt25=17;
                 }
                 break;
             case RULE_ID:
                 {
-                alt23=18;
+                alt25=18;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 23, 0, input);
+                    new NoViableAltException("", 25, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt23) {
+            switch (alt25) {
                 case 1 :
-                    // InternalEntityGrammar.g:4104:2: ( 'cachable' )
+                    // InternalEntityGrammar.g:4146:2: ( 'cachable' )
                     {
-                    // InternalEntityGrammar.g:4104:2: ( 'cachable' )
-                    // InternalEntityGrammar.g:4105:3: 'cachable'
+                    // InternalEntityGrammar.g:4146:2: ( 'cachable' )
+                    // InternalEntityGrammar.g:4147:3: 'cachable'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); 
@@ -14873,10 +15078,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4110:2: ( 'id' )
+                    // InternalEntityGrammar.g:4152:2: ( 'id' )
                     {
-                    // InternalEntityGrammar.g:4110:2: ( 'id' )
-                    // InternalEntityGrammar.g:4111:3: 'id'
+                    // InternalEntityGrammar.g:4152:2: ( 'id' )
+                    // InternalEntityGrammar.g:4153:3: 'id'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); 
@@ -14892,10 +15097,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4116:2: ( 'uuid' )
+                    // InternalEntityGrammar.g:4158:2: ( 'uuid' )
                     {
-                    // InternalEntityGrammar.g:4116:2: ( 'uuid' )
-                    // InternalEntityGrammar.g:4117:3: 'uuid'
+                    // InternalEntityGrammar.g:4158:2: ( 'uuid' )
+                    // InternalEntityGrammar.g:4159:3: 'uuid'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); 
@@ -14911,10 +15116,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4122:2: ( 'transient' )
+                    // InternalEntityGrammar.g:4164:2: ( 'transient' )
                     {
-                    // InternalEntityGrammar.g:4122:2: ( 'transient' )
-                    // InternalEntityGrammar.g:4123:3: 'transient'
+                    // InternalEntityGrammar.g:4164:2: ( 'transient' )
+                    // InternalEntityGrammar.g:4165:3: 'transient'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); 
@@ -14930,10 +15135,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:4128:2: ( 'version' )
+                    // InternalEntityGrammar.g:4170:2: ( 'version' )
                     {
-                    // InternalEntityGrammar.g:4128:2: ( 'version' )
-                    // InternalEntityGrammar.g:4129:3: 'version'
+                    // InternalEntityGrammar.g:4170:2: ( 'version' )
+                    // InternalEntityGrammar.g:4171:3: 'version'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); 
@@ -14949,10 +15154,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:4134:2: ( 'derived' )
+                    // InternalEntityGrammar.g:4176:2: ( 'derived' )
                     {
-                    // InternalEntityGrammar.g:4134:2: ( 'derived' )
-                    // InternalEntityGrammar.g:4135:3: 'derived'
+                    // InternalEntityGrammar.g:4176:2: ( 'derived' )
+                    // InternalEntityGrammar.g:4177:3: 'derived'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getDerivedKeyword_5()); 
@@ -14968,10 +15173,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalEntityGrammar.g:4140:2: ( 'collection' )
+                    // InternalEntityGrammar.g:4182:2: ( 'collection' )
                     {
-                    // InternalEntityGrammar.g:4140:2: ( 'collection' )
-                    // InternalEntityGrammar.g:4141:3: 'collection'
+                    // InternalEntityGrammar.g:4182:2: ( 'collection' )
+                    // InternalEntityGrammar.g:4183:3: 'collection'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getCollectionKeyword_6()); 
@@ -14987,10 +15192,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalEntityGrammar.g:4146:2: ( 'refers' )
+                    // InternalEntityGrammar.g:4188:2: ( 'refers' )
                     {
-                    // InternalEntityGrammar.g:4146:2: ( 'refers' )
-                    // InternalEntityGrammar.g:4147:3: 'refers'
+                    // InternalEntityGrammar.g:4188:2: ( 'refers' )
+                    // InternalEntityGrammar.g:4189:3: 'refers'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_7()); 
@@ -15006,10 +15211,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalEntityGrammar.g:4152:2: ( 'settings' )
+                    // InternalEntityGrammar.g:4194:2: ( 'settings' )
                     {
-                    // InternalEntityGrammar.g:4152:2: ( 'settings' )
-                    // InternalEntityGrammar.g:4153:3: 'settings'
+                    // InternalEntityGrammar.g:4194:2: ( 'settings' )
+                    // InternalEntityGrammar.g:4195:3: 'settings'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_8()); 
@@ -15025,10 +15230,10 @@
                     }
                     break;
                 case 10 :
-                    // InternalEntityGrammar.g:4158:2: ( 'lazy' )
+                    // InternalEntityGrammar.g:4200:2: ( 'lazy' )
                     {
-                    // InternalEntityGrammar.g:4158:2: ( 'lazy' )
-                    // InternalEntityGrammar.g:4159:3: 'lazy'
+                    // InternalEntityGrammar.g:4200:2: ( 'lazy' )
+                    // InternalEntityGrammar.g:4201:3: 'lazy'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_9()); 
@@ -15044,10 +15249,10 @@
                     }
                     break;
                 case 11 :
-                    // InternalEntityGrammar.g:4164:2: ( 'notnull' )
+                    // InternalEntityGrammar.g:4206:2: ( 'notnull' )
                     {
-                    // InternalEntityGrammar.g:4164:2: ( 'notnull' )
-                    // InternalEntityGrammar.g:4165:3: 'notnull'
+                    // InternalEntityGrammar.g:4206:2: ( 'notnull' )
+                    // InternalEntityGrammar.g:4207:3: 'notnull'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_10()); 
@@ -15063,10 +15268,10 @@
                     }
                     break;
                 case 12 :
-                    // InternalEntityGrammar.g:4170:2: ( 'dto' )
+                    // InternalEntityGrammar.g:4212:2: ( 'dto' )
                     {
-                    // InternalEntityGrammar.g:4170:2: ( 'dto' )
-                    // InternalEntityGrammar.g:4171:3: 'dto'
+                    // InternalEntityGrammar.g:4212:2: ( 'dto' )
+                    // InternalEntityGrammar.g:4213:3: 'dto'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_11()); 
@@ -15082,10 +15287,10 @@
                     }
                     break;
                 case 13 :
-                    // InternalEntityGrammar.g:4176:2: ( 'date' )
+                    // InternalEntityGrammar.g:4218:2: ( 'date' )
                     {
-                    // InternalEntityGrammar.g:4176:2: ( 'date' )
-                    // InternalEntityGrammar.g:4177:3: 'date'
+                    // InternalEntityGrammar.g:4218:2: ( 'date' )
+                    // InternalEntityGrammar.g:4219:3: 'date'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_12()); 
@@ -15101,10 +15306,10 @@
                     }
                     break;
                 case 14 :
-                    // InternalEntityGrammar.g:4182:2: ( 'mapto' )
+                    // InternalEntityGrammar.g:4224:2: ( 'mapto' )
                     {
-                    // InternalEntityGrammar.g:4182:2: ( 'mapto' )
-                    // InternalEntityGrammar.g:4183:3: 'mapto'
+                    // InternalEntityGrammar.g:4224:2: ( 'mapto' )
+                    // InternalEntityGrammar.g:4225:3: 'mapto'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_13()); 
@@ -15120,10 +15325,10 @@
                     }
                     break;
                 case 15 :
-                    // InternalEntityGrammar.g:4188:2: ( 'ref' )
+                    // InternalEntityGrammar.g:4230:2: ( 'ref' )
                     {
-                    // InternalEntityGrammar.g:4188:2: ( 'ref' )
-                    // InternalEntityGrammar.g:4189:3: 'ref'
+                    // InternalEntityGrammar.g:4230:2: ( 'ref' )
+                    // InternalEntityGrammar.g:4231:3: 'ref'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_14()); 
@@ -15139,10 +15344,10 @@
                     }
                     break;
                 case 16 :
-                    // InternalEntityGrammar.g:4194:2: ( 'cascade' )
+                    // InternalEntityGrammar.g:4236:2: ( 'cascade' )
                     {
-                    // InternalEntityGrammar.g:4194:2: ( 'cascade' )
-                    // InternalEntityGrammar.g:4195:3: 'cascade'
+                    // InternalEntityGrammar.g:4236:2: ( 'cascade' )
+                    // InternalEntityGrammar.g:4237:3: 'cascade'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_15()); 
@@ -15158,10 +15363,10 @@
                     }
                     break;
                 case 17 :
-                    // InternalEntityGrammar.g:4200:2: ( 'var' )
+                    // InternalEntityGrammar.g:4242:2: ( 'var' )
                     {
-                    // InternalEntityGrammar.g:4200:2: ( 'var' )
-                    // InternalEntityGrammar.g:4201:3: 'var'
+                    // InternalEntityGrammar.g:4242:2: ( 'var' )
+                    // InternalEntityGrammar.g:4243:3: 'var'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_16()); 
@@ -15177,10 +15382,10 @@
                     }
                     break;
                 case 18 :
-                    // InternalEntityGrammar.g:4206:2: ( RULE_ID )
+                    // InternalEntityGrammar.g:4248:2: ( RULE_ID )
                     {
-                    // InternalEntityGrammar.g:4206:2: ( RULE_ID )
-                    // InternalEntityGrammar.g:4207:3: RULE_ID
+                    // InternalEntityGrammar.g:4248:2: ( RULE_ID )
+                    // InternalEntityGrammar.g:4249:3: RULE_ID
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_17()); 
@@ -15213,35 +15418,35 @@
 
 
     // $ANTLR start "rule__LInt__Alternatives_0"
-    // InternalEntityGrammar.g:4216:1: rule__LInt__Alternatives_0 : ( ( '+' ) | ( '-' ) );
+    // InternalEntityGrammar.g:4258:1: rule__LInt__Alternatives_0 : ( ( '+' ) | ( '-' ) );
     public final void rule__LInt__Alternatives_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4220:1: ( ( '+' ) | ( '-' ) )
-            int alt24=2;
-            int LA24_0 = input.LA(1);
+            // InternalEntityGrammar.g:4262:1: ( ( '+' ) | ( '-' ) )
+            int alt26=2;
+            int LA26_0 = input.LA(1);
 
-            if ( (LA24_0==33) ) {
-                alt24=1;
+            if ( (LA26_0==33) ) {
+                alt26=1;
             }
-            else if ( (LA24_0==34) ) {
-                alt24=2;
+            else if ( (LA26_0==34) ) {
+                alt26=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 24, 0, input);
+                    new NoViableAltException("", 26, 0, input);
 
                 throw nvae;
             }
-            switch (alt24) {
+            switch (alt26) {
                 case 1 :
-                    // InternalEntityGrammar.g:4221:2: ( '+' )
+                    // InternalEntityGrammar.g:4263:2: ( '+' )
                     {
-                    // InternalEntityGrammar.g:4221:2: ( '+' )
-                    // InternalEntityGrammar.g:4222:3: '+'
+                    // InternalEntityGrammar.g:4263:2: ( '+' )
+                    // InternalEntityGrammar.g:4264:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); 
@@ -15257,10 +15462,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4227:2: ( '-' )
+                    // InternalEntityGrammar.g:4269:2: ( '-' )
                     {
-                    // InternalEntityGrammar.g:4227:2: ( '-' )
-                    // InternalEntityGrammar.g:4228:3: '-'
+                    // InternalEntityGrammar.g:4269:2: ( '-' )
+                    // InternalEntityGrammar.g:4270:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_1()); 
@@ -15293,27 +15498,27 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2"
-    // InternalEntityGrammar.g:4237:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );
+    // InternalEntityGrammar.g:4279:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );
     public final void rule__XImportDeclaration__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4241:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
-            int alt25=4;
-            alt25 = dfa25.predict(input);
-            switch (alt25) {
+            // InternalEntityGrammar.g:4283:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
+            int alt27=4;
+            alt27 = dfa27.predict(input);
+            switch (alt27) {
                 case 1 :
-                    // InternalEntityGrammar.g:4242:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:4284:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4242:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
-                    // InternalEntityGrammar.g:4243:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalEntityGrammar.g:4284:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:4285:3: ( rule__XImportDeclaration__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); 
                     }
-                    // InternalEntityGrammar.g:4244:3: ( rule__XImportDeclaration__Group_2_0__0 )
-                    // InternalEntityGrammar.g:4244:4: rule__XImportDeclaration__Group_2_0__0
+                    // InternalEntityGrammar.g:4286:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalEntityGrammar.g:4286:4: rule__XImportDeclaration__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_0__0();
@@ -15333,16 +15538,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4248:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalEntityGrammar.g:4290:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
                     {
-                    // InternalEntityGrammar.g:4248:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
-                    // InternalEntityGrammar.g:4249:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalEntityGrammar.g:4290:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalEntityGrammar.g:4291:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); 
                     }
-                    // InternalEntityGrammar.g:4250:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
-                    // InternalEntityGrammar.g:4250:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
+                    // InternalEntityGrammar.g:4292:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalEntityGrammar.g:4292:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedTypeAssignment_2_1();
@@ -15362,16 +15567,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4254:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalEntityGrammar.g:4296:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
                     {
-                    // InternalEntityGrammar.g:4254:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
-                    // InternalEntityGrammar.g:4255:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalEntityGrammar.g:4296:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalEntityGrammar.g:4297:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); 
                     }
-                    // InternalEntityGrammar.g:4256:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
-                    // InternalEntityGrammar.g:4256:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
+                    // InternalEntityGrammar.g:4298:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalEntityGrammar.g:4298:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedNamespaceAssignment_2_2();
@@ -15391,16 +15596,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4260:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalEntityGrammar.g:4302:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
                     {
-                    // InternalEntityGrammar.g:4260:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
-                    // InternalEntityGrammar.g:4261:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalEntityGrammar.g:4302:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalEntityGrammar.g:4303:3: ( rule__XImportDeclaration__Group_2_3__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); 
                     }
-                    // InternalEntityGrammar.g:4262:3: ( rule__XImportDeclaration__Group_2_3__0 )
-                    // InternalEntityGrammar.g:4262:4: rule__XImportDeclaration__Group_2_3__0
+                    // InternalEntityGrammar.g:4304:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalEntityGrammar.g:4304:4: rule__XImportDeclaration__Group_2_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_3__0();
@@ -15437,41 +15642,41 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2_0_3"
-    // InternalEntityGrammar.g:4270:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
+    // InternalEntityGrammar.g:4312:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
     public final void rule__XImportDeclaration__Alternatives_2_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4274:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
-            int alt26=2;
-            int LA26_0 = input.LA(1);
+            // InternalEntityGrammar.g:4316:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
+            int alt28=2;
+            int LA28_0 = input.LA(1);
 
-            if ( (LA26_0==53) ) {
-                alt26=1;
+            if ( (LA28_0==53) ) {
+                alt28=1;
             }
-            else if ( (LA26_0==RULE_ID) ) {
-                alt26=2;
+            else if ( (LA28_0==RULE_ID) ) {
+                alt28=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 26, 0, input);
+                    new NoViableAltException("", 28, 0, input);
 
                 throw nvae;
             }
-            switch (alt26) {
+            switch (alt28) {
                 case 1 :
-                    // InternalEntityGrammar.g:4275:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalEntityGrammar.g:4317:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
                     {
-                    // InternalEntityGrammar.g:4275:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
-                    // InternalEntityGrammar.g:4276:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalEntityGrammar.g:4317:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalEntityGrammar.g:4318:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); 
                     }
-                    // InternalEntityGrammar.g:4277:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
-                    // InternalEntityGrammar.g:4277:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
+                    // InternalEntityGrammar.g:4319:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalEntityGrammar.g:4319:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__WildcardAssignment_2_0_3_0();
@@ -15491,16 +15696,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4281:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalEntityGrammar.g:4323:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
                     {
-                    // InternalEntityGrammar.g:4281:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
-                    // InternalEntityGrammar.g:4282:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalEntityGrammar.g:4323:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalEntityGrammar.g:4324:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); 
                     }
-                    // InternalEntityGrammar.g:4283:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
-                    // InternalEntityGrammar.g:4283:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
+                    // InternalEntityGrammar.g:4325:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalEntityGrammar.g:4325:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__MemberNameAssignment_2_0_3_1();
@@ -15537,27 +15742,27 @@
 
 
     // $ANTLR start "rule__XAnnotation__Alternatives_3_1"
-    // InternalEntityGrammar.g:4291:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
+    // InternalEntityGrammar.g:4333:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
     public final void rule__XAnnotation__Alternatives_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4295:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
-            int alt27=2;
-            alt27 = dfa27.predict(input);
-            switch (alt27) {
+            // InternalEntityGrammar.g:4337:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
+            int alt29=2;
+            alt29 = dfa29.predict(input);
+            switch (alt29) {
                 case 1 :
-                    // InternalEntityGrammar.g:4296:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalEntityGrammar.g:4338:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4296:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
-                    // InternalEntityGrammar.g:4297:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalEntityGrammar.g:4338:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalEntityGrammar.g:4339:3: ( rule__XAnnotation__Group_3_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
                     }
-                    // InternalEntityGrammar.g:4298:3: ( rule__XAnnotation__Group_3_1_0__0 )
-                    // InternalEntityGrammar.g:4298:4: rule__XAnnotation__Group_3_1_0__0
+                    // InternalEntityGrammar.g:4340:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalEntityGrammar.g:4340:4: rule__XAnnotation__Group_3_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Group_3_1_0__0();
@@ -15577,16 +15782,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4302:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalEntityGrammar.g:4344:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
                     {
-                    // InternalEntityGrammar.g:4302:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
-                    // InternalEntityGrammar.g:4303:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalEntityGrammar.g:4344:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalEntityGrammar.g:4345:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
                     }
-                    // InternalEntityGrammar.g:4304:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
-                    // InternalEntityGrammar.g:4304:4: rule__XAnnotation__ValueAssignment_3_1_1
+                    // InternalEntityGrammar.g:4346:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalEntityGrammar.g:4346:4: rule__XAnnotation__ValueAssignment_3_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__ValueAssignment_3_1_1();
@@ -15623,27 +15828,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Alternatives"
-    // InternalEntityGrammar.g:4312:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
+    // InternalEntityGrammar.g:4354:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
     public final void rule__XAnnotationElementValueOrCommaList__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4316:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
-            int alt28=2;
-            alt28 = dfa28.predict(input);
-            switch (alt28) {
+            // InternalEntityGrammar.g:4358:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            int alt30=2;
+            alt30 = dfa30.predict(input);
+            switch (alt30) {
                 case 1 :
-                    // InternalEntityGrammar.g:4317:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalEntityGrammar.g:4359:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4317:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
-                    // InternalEntityGrammar.g:4318:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalEntityGrammar.g:4359:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalEntityGrammar.g:4360:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
                     }
-                    // InternalEntityGrammar.g:4319:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
-                    // InternalEntityGrammar.g:4319:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+                    // InternalEntityGrammar.g:4361:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalEntityGrammar.g:4361:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_0__0();
@@ -15663,16 +15868,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4323:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalEntityGrammar.g:4365:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:4323:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
-                    // InternalEntityGrammar.g:4324:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalEntityGrammar.g:4365:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalEntityGrammar.g:4366:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
                     }
-                    // InternalEntityGrammar.g:4325:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
-                    // InternalEntityGrammar.g:4325:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
+                    // InternalEntityGrammar.g:4367:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalEntityGrammar.g:4367:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_1__0();
@@ -15709,27 +15914,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Alternatives"
-    // InternalEntityGrammar.g:4333:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    // InternalEntityGrammar.g:4375:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
     public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4337:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
-            int alt29=2;
-            alt29 = dfa29.predict(input);
-            switch (alt29) {
+            // InternalEntityGrammar.g:4379:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            int alt31=2;
+            alt31 = dfa31.predict(input);
+            switch (alt31) {
                 case 1 :
-                    // InternalEntityGrammar.g:4338:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalEntityGrammar.g:4380:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4338:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
-                    // InternalEntityGrammar.g:4339:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalEntityGrammar.g:4380:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalEntityGrammar.g:4381:3: ( rule__XAnnotationElementValue__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
                     }
-                    // InternalEntityGrammar.g:4340:3: ( rule__XAnnotationElementValue__Group_0__0 )
-                    // InternalEntityGrammar.g:4340:4: rule__XAnnotationElementValue__Group_0__0
+                    // InternalEntityGrammar.g:4382:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalEntityGrammar.g:4382:4: rule__XAnnotationElementValue__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValue__Group_0__0();
@@ -15749,10 +15954,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4344:2: ( ruleXAnnotationOrExpression )
+                    // InternalEntityGrammar.g:4386:2: ( ruleXAnnotationOrExpression )
                     {
-                    // InternalEntityGrammar.g:4344:2: ( ruleXAnnotationOrExpression )
-                    // InternalEntityGrammar.g:4345:3: ruleXAnnotationOrExpression
+                    // InternalEntityGrammar.g:4386:2: ( ruleXAnnotationOrExpression )
+                    // InternalEntityGrammar.g:4387:3: ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
@@ -15789,35 +15994,35 @@
 
 
     // $ANTLR start "rule__XAnnotationOrExpression__Alternatives"
-    // InternalEntityGrammar.g:4354:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    // InternalEntityGrammar.g:4396:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
     public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4358:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
-            int alt30=2;
-            int LA30_0 = input.LA(1);
+            // InternalEntityGrammar.g:4400:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            int alt32=2;
+            int LA32_0 = input.LA(1);
 
-            if ( (LA30_0==134) ) {
-                alt30=1;
+            if ( (LA32_0==134) ) {
+                alt32=1;
             }
-            else if ( ((LA30_0>=RULE_ID && LA30_0<=RULE_STRING)||(LA30_0>=33 && LA30_0<=34)||LA30_0==46||LA30_0==57||(LA30_0>=62 && LA30_0<=67)||LA30_0==88||LA30_0==90||LA30_0==99||LA30_0==135||LA30_0==138||LA30_0==140||(LA30_0>=144 && LA30_0<=152)||LA30_0==154||LA30_0==179) ) {
-                alt30=2;
+            else if ( ((LA32_0>=RULE_ID && LA32_0<=RULE_STRING)||(LA32_0>=33 && LA32_0<=34)||LA32_0==46||LA32_0==57||(LA32_0>=62 && LA32_0<=67)||LA32_0==88||LA32_0==90||LA32_0==99||LA32_0==135||LA32_0==138||LA32_0==140||(LA32_0>=144 && LA32_0<=152)||LA32_0==154||LA32_0==182) ) {
+                alt32=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 30, 0, input);
+                    new NoViableAltException("", 32, 0, input);
 
                 throw nvae;
             }
-            switch (alt30) {
+            switch (alt32) {
                 case 1 :
-                    // InternalEntityGrammar.g:4359:2: ( ruleXAnnotation )
+                    // InternalEntityGrammar.g:4401:2: ( ruleXAnnotation )
                     {
-                    // InternalEntityGrammar.g:4359:2: ( ruleXAnnotation )
-                    // InternalEntityGrammar.g:4360:3: ruleXAnnotation
+                    // InternalEntityGrammar.g:4401:2: ( ruleXAnnotation )
+                    // InternalEntityGrammar.g:4402:3: ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
@@ -15837,10 +16042,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4365:2: ( ruleXExpression )
+                    // InternalEntityGrammar.g:4407:2: ( ruleXExpression )
                     {
-                    // InternalEntityGrammar.g:4365:2: ( ruleXExpression )
-                    // InternalEntityGrammar.g:4366:3: ruleXExpression
+                    // InternalEntityGrammar.g:4407:2: ( ruleXExpression )
+                    // InternalEntityGrammar.g:4408:3: ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
@@ -15877,29 +16082,29 @@
 
 
     // $ANTLR start "rule__XAssignment__Alternatives"
-    // InternalEntityGrammar.g:4375:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
+    // InternalEntityGrammar.g:4417:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
     public final void rule__XAssignment__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4379:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
-            int alt31=2;
+            // InternalEntityGrammar.g:4421:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            int alt33=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                int LA31_1 = input.LA(2);
+                int LA33_1 = input.LA(2);
 
-                if ( (LA31_1==EOF||(LA31_1>=RULE_ID && LA31_1<=RULE_STRING)||(LA31_1>=14 && LA31_1<=16)||(LA31_1>=18 && LA31_1<=22)||LA31_1==31||(LA31_1>=33 && LA31_1<=67)||(LA31_1>=88 && LA31_1<=91)||(LA31_1>=94 && LA31_1<=95)||(LA31_1>=99 && LA31_1<=100)||LA31_1==103||LA31_1==105||(LA31_1>=133 && LA31_1<=155)||(LA31_1>=162 && LA31_1<=164)||(LA31_1>=176 && LA31_1<=177)||LA31_1==179) ) {
-                    alt31=2;
+                if ( (LA33_1==13) ) {
+                    alt33=1;
                 }
-                else if ( (LA31_1==13) ) {
-                    alt31=1;
+                else if ( (LA33_1==EOF||(LA33_1>=RULE_ID && LA33_1<=RULE_STRING)||(LA33_1>=14 && LA33_1<=16)||(LA33_1>=18 && LA33_1<=22)||LA33_1==31||(LA33_1>=33 && LA33_1<=67)||(LA33_1>=88 && LA33_1<=91)||(LA33_1>=94 && LA33_1<=95)||(LA33_1>=99 && LA33_1<=100)||LA33_1==103||LA33_1==105||(LA33_1>=133 && LA33_1<=155)||LA33_1==162||(LA33_1>=166 && LA33_1<=167)||(LA33_1>=179 && LA33_1<=180)||LA33_1==182) ) {
+                    alt33=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 31, 1, input);
+                        new NoViableAltException("", 33, 1, input);
 
                     throw nvae;
                 }
@@ -15907,18 +16112,18 @@
                 break;
             case 62:
                 {
-                int LA31_2 = input.LA(2);
+                int LA33_2 = input.LA(2);
 
-                if ( (LA31_2==EOF||(LA31_2>=RULE_ID && LA31_2<=RULE_STRING)||(LA31_2>=14 && LA31_2<=16)||(LA31_2>=18 && LA31_2<=22)||LA31_2==31||(LA31_2>=33 && LA31_2<=67)||(LA31_2>=88 && LA31_2<=91)||(LA31_2>=94 && LA31_2<=95)||(LA31_2>=99 && LA31_2<=100)||LA31_2==103||LA31_2==105||(LA31_2>=133 && LA31_2<=155)||(LA31_2>=162 && LA31_2<=164)||(LA31_2>=176 && LA31_2<=177)||LA31_2==179) ) {
-                    alt31=2;
+                if ( (LA33_2==13) ) {
+                    alt33=1;
                 }
-                else if ( (LA31_2==13) ) {
-                    alt31=1;
+                else if ( (LA33_2==EOF||(LA33_2>=RULE_ID && LA33_2<=RULE_STRING)||(LA33_2>=14 && LA33_2<=16)||(LA33_2>=18 && LA33_2<=22)||LA33_2==31||(LA33_2>=33 && LA33_2<=67)||(LA33_2>=88 && LA33_2<=91)||(LA33_2>=94 && LA33_2<=95)||(LA33_2>=99 && LA33_2<=100)||LA33_2==103||LA33_2==105||(LA33_2>=133 && LA33_2<=155)||LA33_2==162||(LA33_2>=166 && LA33_2<=167)||(LA33_2>=179 && LA33_2<=180)||LA33_2==182) ) {
+                    alt33=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 31, 2, input);
+                        new NoViableAltException("", 33, 2, input);
 
                     throw nvae;
                 }
@@ -15926,18 +16131,18 @@
                 break;
             case 63:
                 {
-                int LA31_3 = input.LA(2);
+                int LA33_3 = input.LA(2);
 
-                if ( (LA31_3==EOF||(LA31_3>=RULE_ID && LA31_3<=RULE_STRING)||(LA31_3>=14 && LA31_3<=16)||(LA31_3>=18 && LA31_3<=22)||LA31_3==31||(LA31_3>=33 && LA31_3<=67)||(LA31_3>=88 && LA31_3<=91)||(LA31_3>=94 && LA31_3<=95)||(LA31_3>=99 && LA31_3<=100)||LA31_3==103||LA31_3==105||(LA31_3>=133 && LA31_3<=155)||(LA31_3>=162 && LA31_3<=164)||(LA31_3>=176 && LA31_3<=177)||LA31_3==179) ) {
-                    alt31=2;
+                if ( (LA33_3==EOF||(LA33_3>=RULE_ID && LA33_3<=RULE_STRING)||(LA33_3>=14 && LA33_3<=16)||(LA33_3>=18 && LA33_3<=22)||LA33_3==31||(LA33_3>=33 && LA33_3<=67)||(LA33_3>=88 && LA33_3<=91)||(LA33_3>=94 && LA33_3<=95)||(LA33_3>=99 && LA33_3<=100)||LA33_3==103||LA33_3==105||(LA33_3>=133 && LA33_3<=155)||LA33_3==162||(LA33_3>=166 && LA33_3<=167)||(LA33_3>=179 && LA33_3<=180)||LA33_3==182) ) {
+                    alt33=2;
                 }
-                else if ( (LA31_3==13) ) {
-                    alt31=1;
+                else if ( (LA33_3==13) ) {
+                    alt33=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 31, 3, input);
+                        new NoViableAltException("", 33, 3, input);
 
                     throw nvae;
                 }
@@ -15945,18 +16150,18 @@
                 break;
             case 64:
                 {
-                int LA31_4 = input.LA(2);
+                int LA33_4 = input.LA(2);
 
-                if ( (LA31_4==13) ) {
-                    alt31=1;
+                if ( (LA33_4==13) ) {
+                    alt33=1;
                 }
-                else if ( (LA31_4==EOF||(LA31_4>=RULE_ID && LA31_4<=RULE_STRING)||(LA31_4>=14 && LA31_4<=16)||(LA31_4>=18 && LA31_4<=22)||LA31_4==31||(LA31_4>=33 && LA31_4<=67)||(LA31_4>=88 && LA31_4<=91)||(LA31_4>=94 && LA31_4<=95)||(LA31_4>=99 && LA31_4<=100)||LA31_4==103||LA31_4==105||(LA31_4>=133 && LA31_4<=155)||(LA31_4>=162 && LA31_4<=164)||(LA31_4>=176 && LA31_4<=177)||LA31_4==179) ) {
-                    alt31=2;
+                else if ( (LA33_4==EOF||(LA33_4>=RULE_ID && LA33_4<=RULE_STRING)||(LA33_4>=14 && LA33_4<=16)||(LA33_4>=18 && LA33_4<=22)||LA33_4==31||(LA33_4>=33 && LA33_4<=67)||(LA33_4>=88 && LA33_4<=91)||(LA33_4>=94 && LA33_4<=95)||(LA33_4>=99 && LA33_4<=100)||LA33_4==103||LA33_4==105||(LA33_4>=133 && LA33_4<=155)||LA33_4==162||(LA33_4>=166 && LA33_4<=167)||(LA33_4>=179 && LA33_4<=180)||LA33_4==182) ) {
+                    alt33=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 31, 4, input);
+                        new NoViableAltException("", 33, 4, input);
 
                     throw nvae;
                 }
@@ -15964,18 +16169,18 @@
                 break;
             case 65:
                 {
-                int LA31_5 = input.LA(2);
+                int LA33_5 = input.LA(2);
 
-                if ( (LA31_5==EOF||(LA31_5>=RULE_ID && LA31_5<=RULE_STRING)||(LA31_5>=14 && LA31_5<=16)||(LA31_5>=18 && LA31_5<=22)||LA31_5==31||(LA31_5>=33 && LA31_5<=67)||(LA31_5>=88 && LA31_5<=91)||(LA31_5>=94 && LA31_5<=95)||(LA31_5>=99 && LA31_5<=100)||LA31_5==103||LA31_5==105||(LA31_5>=133 && LA31_5<=155)||(LA31_5>=162 && LA31_5<=164)||(LA31_5>=176 && LA31_5<=177)||LA31_5==179) ) {
-                    alt31=2;
+                if ( (LA33_5==EOF||(LA33_5>=RULE_ID && LA33_5<=RULE_STRING)||(LA33_5>=14 && LA33_5<=16)||(LA33_5>=18 && LA33_5<=22)||LA33_5==31||(LA33_5>=33 && LA33_5<=67)||(LA33_5>=88 && LA33_5<=91)||(LA33_5>=94 && LA33_5<=95)||(LA33_5>=99 && LA33_5<=100)||LA33_5==103||LA33_5==105||(LA33_5>=133 && LA33_5<=155)||LA33_5==162||(LA33_5>=166 && LA33_5<=167)||(LA33_5>=179 && LA33_5<=180)||LA33_5==182) ) {
+                    alt33=2;
                 }
-                else if ( (LA31_5==13) ) {
-                    alt31=1;
+                else if ( (LA33_5==13) ) {
+                    alt33=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 31, 5, input);
+                        new NoViableAltException("", 33, 5, input);
 
                     throw nvae;
                 }
@@ -16007,31 +16212,31 @@
             case 151:
             case 152:
             case 154:
-            case 179:
+            case 182:
                 {
-                alt31=2;
+                alt33=2;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 31, 0, input);
+                    new NoViableAltException("", 33, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt31) {
+            switch (alt33) {
                 case 1 :
-                    // InternalEntityGrammar.g:4380:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalEntityGrammar.g:4422:2: ( ( rule__XAssignment__Group_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4380:2: ( ( rule__XAssignment__Group_0__0 ) )
-                    // InternalEntityGrammar.g:4381:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalEntityGrammar.g:4422:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalEntityGrammar.g:4423:3: ( rule__XAssignment__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAssignmentAccess().getGroup_0()); 
                     }
-                    // InternalEntityGrammar.g:4382:3: ( rule__XAssignment__Group_0__0 )
-                    // InternalEntityGrammar.g:4382:4: rule__XAssignment__Group_0__0
+                    // InternalEntityGrammar.g:4424:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalEntityGrammar.g:4424:4: rule__XAssignment__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_0__0();
@@ -16051,16 +16256,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4386:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalEntityGrammar.g:4428:2: ( ( rule__XAssignment__Group_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:4386:2: ( ( rule__XAssignment__Group_1__0 ) )
-                    // InternalEntityGrammar.g:4387:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalEntityGrammar.g:4428:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalEntityGrammar.g:4429:3: ( rule__XAssignment__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAssignmentAccess().getGroup_1()); 
                     }
-                    // InternalEntityGrammar.g:4388:3: ( rule__XAssignment__Group_1__0 )
-                    // InternalEntityGrammar.g:4388:4: rule__XAssignment__Group_1__0
+                    // InternalEntityGrammar.g:4430:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalEntityGrammar.g:4430:4: rule__XAssignment__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_1__0();
@@ -16097,64 +16302,64 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Alternatives"
-    // InternalEntityGrammar.g:4396:1: rule__OpMultiAssign__Alternatives : ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) );
+    // InternalEntityGrammar.g:4438:1: rule__OpMultiAssign__Alternatives : ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) );
     public final void rule__OpMultiAssign__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4400:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
-            int alt32=7;
+            // InternalEntityGrammar.g:4442:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
+            int alt34=7;
             switch ( input.LA(1) ) {
             case 35:
                 {
-                alt32=1;
+                alt34=1;
                 }
                 break;
             case 36:
                 {
-                alt32=2;
+                alt34=2;
                 }
                 break;
             case 37:
                 {
-                alt32=3;
+                alt34=3;
                 }
                 break;
             case 38:
                 {
-                alt32=4;
+                alt34=4;
                 }
                 break;
             case 39:
                 {
-                alt32=5;
+                alt34=5;
                 }
                 break;
             case 46:
                 {
-                alt32=6;
+                alt34=6;
                 }
                 break;
             case 45:
                 {
-                alt32=7;
+                alt34=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 32, 0, input);
+                    new NoViableAltException("", 34, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt32) {
+            switch (alt34) {
                 case 1 :
-                    // InternalEntityGrammar.g:4401:2: ( '+=' )
+                    // InternalEntityGrammar.g:4443:2: ( '+=' )
                     {
-                    // InternalEntityGrammar.g:4401:2: ( '+=' )
-                    // InternalEntityGrammar.g:4402:3: '+='
+                    // InternalEntityGrammar.g:4443:2: ( '+=' )
+                    // InternalEntityGrammar.g:4444:3: '+='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
@@ -16170,10 +16375,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4407:2: ( '-=' )
+                    // InternalEntityGrammar.g:4449:2: ( '-=' )
                     {
-                    // InternalEntityGrammar.g:4407:2: ( '-=' )
-                    // InternalEntityGrammar.g:4408:3: '-='
+                    // InternalEntityGrammar.g:4449:2: ( '-=' )
+                    // InternalEntityGrammar.g:4450:3: '-='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
@@ -16189,10 +16394,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4413:2: ( '*=' )
+                    // InternalEntityGrammar.g:4455:2: ( '*=' )
                     {
-                    // InternalEntityGrammar.g:4413:2: ( '*=' )
-                    // InternalEntityGrammar.g:4414:3: '*='
+                    // InternalEntityGrammar.g:4455:2: ( '*=' )
+                    // InternalEntityGrammar.g:4456:3: '*='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
@@ -16208,10 +16413,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4419:2: ( '/=' )
+                    // InternalEntityGrammar.g:4461:2: ( '/=' )
                     {
-                    // InternalEntityGrammar.g:4419:2: ( '/=' )
-                    // InternalEntityGrammar.g:4420:3: '/='
+                    // InternalEntityGrammar.g:4461:2: ( '/=' )
+                    // InternalEntityGrammar.g:4462:3: '/='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
@@ -16227,10 +16432,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:4425:2: ( '%=' )
+                    // InternalEntityGrammar.g:4467:2: ( '%=' )
                     {
-                    // InternalEntityGrammar.g:4425:2: ( '%=' )
-                    // InternalEntityGrammar.g:4426:3: '%='
+                    // InternalEntityGrammar.g:4467:2: ( '%=' )
+                    // InternalEntityGrammar.g:4468:3: '%='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
@@ -16246,16 +16451,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:4431:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalEntityGrammar.g:4473:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
                     {
-                    // InternalEntityGrammar.g:4431:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
-                    // InternalEntityGrammar.g:4432:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalEntityGrammar.g:4473:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalEntityGrammar.g:4474:3: ( rule__OpMultiAssign__Group_5__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
                     }
-                    // InternalEntityGrammar.g:4433:3: ( rule__OpMultiAssign__Group_5__0 )
-                    // InternalEntityGrammar.g:4433:4: rule__OpMultiAssign__Group_5__0
+                    // InternalEntityGrammar.g:4475:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalEntityGrammar.g:4475:4: rule__OpMultiAssign__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpMultiAssign__Group_5__0();
@@ -16275,16 +16480,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalEntityGrammar.g:4437:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalEntityGrammar.g:4479:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
                     {
-                    // InternalEntityGrammar.g:4437:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
-                    // InternalEntityGrammar.g:4438:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalEntityGrammar.g:4479:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalEntityGrammar.g:4480:3: ( rule__OpMultiAssign__Group_6__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
                     }
-                    // InternalEntityGrammar.g:4439:3: ( rule__OpMultiAssign__Group_6__0 )
-                    // InternalEntityGrammar.g:4439:4: rule__OpMultiAssign__Group_6__0
+                    // InternalEntityGrammar.g:4481:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalEntityGrammar.g:4481:4: rule__OpMultiAssign__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpMultiAssign__Group_6__0();
@@ -16321,49 +16526,49 @@
 
 
     // $ANTLR start "rule__OpEquality__Alternatives"
-    // InternalEntityGrammar.g:4447:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
+    // InternalEntityGrammar.g:4489:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
     public final void rule__OpEquality__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4451:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
-            int alt33=4;
+            // InternalEntityGrammar.g:4493:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
+            int alt35=4;
             switch ( input.LA(1) ) {
             case 40:
                 {
-                alt33=1;
+                alt35=1;
                 }
                 break;
             case 41:
                 {
-                alt33=2;
+                alt35=2;
                 }
                 break;
             case 42:
                 {
-                alt33=3;
+                alt35=3;
                 }
                 break;
             case 43:
                 {
-                alt33=4;
+                alt35=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 33, 0, input);
+                    new NoViableAltException("", 35, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt33) {
+            switch (alt35) {
                 case 1 :
-                    // InternalEntityGrammar.g:4452:2: ( '==' )
+                    // InternalEntityGrammar.g:4494:2: ( '==' )
                     {
-                    // InternalEntityGrammar.g:4452:2: ( '==' )
-                    // InternalEntityGrammar.g:4453:3: '=='
+                    // InternalEntityGrammar.g:4494:2: ( '==' )
+                    // InternalEntityGrammar.g:4495:3: '=='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
@@ -16379,10 +16584,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4458:2: ( '!=' )
+                    // InternalEntityGrammar.g:4500:2: ( '!=' )
                     {
-                    // InternalEntityGrammar.g:4458:2: ( '!=' )
-                    // InternalEntityGrammar.g:4459:3: '!='
+                    // InternalEntityGrammar.g:4500:2: ( '!=' )
+                    // InternalEntityGrammar.g:4501:3: '!='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
@@ -16398,10 +16603,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4464:2: ( '===' )
+                    // InternalEntityGrammar.g:4506:2: ( '===' )
                     {
-                    // InternalEntityGrammar.g:4464:2: ( '===' )
-                    // InternalEntityGrammar.g:4465:3: '==='
+                    // InternalEntityGrammar.g:4506:2: ( '===' )
+                    // InternalEntityGrammar.g:4507:3: '==='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
@@ -16417,10 +16622,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4470:2: ( '!==' )
+                    // InternalEntityGrammar.g:4512:2: ( '!==' )
                     {
-                    // InternalEntityGrammar.g:4470:2: ( '!==' )
-                    // InternalEntityGrammar.g:4471:3: '!=='
+                    // InternalEntityGrammar.g:4512:2: ( '!==' )
+                    // InternalEntityGrammar.g:4513:3: '!=='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
@@ -16453,41 +16658,41 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Alternatives_1"
-    // InternalEntityGrammar.g:4480:1: rule__XRelationalExpression__Alternatives_1 : ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) );
+    // InternalEntityGrammar.g:4522:1: rule__XRelationalExpression__Alternatives_1 : ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) );
     public final void rule__XRelationalExpression__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4484:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
-            int alt34=2;
-            int LA34_0 = input.LA(1);
+            // InternalEntityGrammar.g:4526:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
+            int alt36=2;
+            int LA36_0 = input.LA(1);
 
-            if ( (LA34_0==136) ) {
-                alt34=1;
+            if ( (LA36_0==136) ) {
+                alt36=1;
             }
-            else if ( ((LA34_0>=44 && LA34_0<=46)) ) {
-                alt34=2;
+            else if ( ((LA36_0>=44 && LA36_0<=46)) ) {
+                alt36=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 34, 0, input);
+                    new NoViableAltException("", 36, 0, input);
 
                 throw nvae;
             }
-            switch (alt34) {
+            switch (alt36) {
                 case 1 :
-                    // InternalEntityGrammar.g:4485:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalEntityGrammar.g:4527:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4485:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
-                    // InternalEntityGrammar.g:4486:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalEntityGrammar.g:4527:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalEntityGrammar.g:4528:3: ( rule__XRelationalExpression__Group_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
                     }
-                    // InternalEntityGrammar.g:4487:3: ( rule__XRelationalExpression__Group_1_0__0 )
-                    // InternalEntityGrammar.g:4487:4: rule__XRelationalExpression__Group_1_0__0
+                    // InternalEntityGrammar.g:4529:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalEntityGrammar.g:4529:4: rule__XRelationalExpression__Group_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XRelationalExpression__Group_1_0__0();
@@ -16507,16 +16712,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4491:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalEntityGrammar.g:4533:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:4491:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
-                    // InternalEntityGrammar.g:4492:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalEntityGrammar.g:4533:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalEntityGrammar.g:4534:3: ( rule__XRelationalExpression__Group_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
                     }
-                    // InternalEntityGrammar.g:4493:3: ( rule__XRelationalExpression__Group_1_1__0 )
-                    // InternalEntityGrammar.g:4493:4: rule__XRelationalExpression__Group_1_1__0
+                    // InternalEntityGrammar.g:4535:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalEntityGrammar.g:4535:4: rule__XRelationalExpression__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XRelationalExpression__Group_1_1__0();
@@ -16553,34 +16758,34 @@
 
 
     // $ANTLR start "rule__OpCompare__Alternatives"
-    // InternalEntityGrammar.g:4501:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
+    // InternalEntityGrammar.g:4543:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
     public final void rule__OpCompare__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4505:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
-            int alt35=4;
+            // InternalEntityGrammar.g:4547:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
+            int alt37=4;
             switch ( input.LA(1) ) {
             case 44:
                 {
-                alt35=1;
+                alt37=1;
                 }
                 break;
             case 46:
                 {
-                int LA35_2 = input.LA(2);
+                int LA37_2 = input.LA(2);
 
-                if ( (LA35_2==EOF||(LA35_2>=RULE_ID && LA35_2<=RULE_STRING)||(LA35_2>=33 && LA35_2<=34)||LA35_2==46||LA35_2==57||(LA35_2>=62 && LA35_2<=67)||LA35_2==88||LA35_2==90||LA35_2==99||LA35_2==135||LA35_2==138||LA35_2==140||(LA35_2>=144 && LA35_2<=152)||LA35_2==154||LA35_2==179) ) {
-                    alt35=4;
+                if ( (LA37_2==13) ) {
+                    alt37=2;
                 }
-                else if ( (LA35_2==13) ) {
-                    alt35=2;
+                else if ( (LA37_2==EOF||(LA37_2>=RULE_ID && LA37_2<=RULE_STRING)||(LA37_2>=33 && LA37_2<=34)||LA37_2==46||LA37_2==57||(LA37_2>=62 && LA37_2<=67)||LA37_2==88||LA37_2==90||LA37_2==99||LA37_2==135||LA37_2==138||LA37_2==140||(LA37_2>=144 && LA37_2<=152)||LA37_2==154||LA37_2==182) ) {
+                    alt37=4;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 35, 2, input);
+                        new NoViableAltException("", 37, 2, input);
 
                     throw nvae;
                 }
@@ -16588,23 +16793,23 @@
                 break;
             case 45:
                 {
-                alt35=3;
+                alt37=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 35, 0, input);
+                    new NoViableAltException("", 37, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt35) {
+            switch (alt37) {
                 case 1 :
-                    // InternalEntityGrammar.g:4506:2: ( '>=' )
+                    // InternalEntityGrammar.g:4548:2: ( '>=' )
                     {
-                    // InternalEntityGrammar.g:4506:2: ( '>=' )
-                    // InternalEntityGrammar.g:4507:3: '>='
+                    // InternalEntityGrammar.g:4548:2: ( '>=' )
+                    // InternalEntityGrammar.g:4549:3: '>='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
@@ -16620,16 +16825,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4512:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalEntityGrammar.g:4554:2: ( ( rule__OpCompare__Group_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:4512:2: ( ( rule__OpCompare__Group_1__0 ) )
-                    // InternalEntityGrammar.g:4513:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalEntityGrammar.g:4554:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalEntityGrammar.g:4555:3: ( rule__OpCompare__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGroup_1()); 
                     }
-                    // InternalEntityGrammar.g:4514:3: ( rule__OpCompare__Group_1__0 )
-                    // InternalEntityGrammar.g:4514:4: rule__OpCompare__Group_1__0
+                    // InternalEntityGrammar.g:4556:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalEntityGrammar.g:4556:4: rule__OpCompare__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpCompare__Group_1__0();
@@ -16649,10 +16854,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4518:2: ( '>' )
+                    // InternalEntityGrammar.g:4560:2: ( '>' )
                     {
-                    // InternalEntityGrammar.g:4518:2: ( '>' )
-                    // InternalEntityGrammar.g:4519:3: '>'
+                    // InternalEntityGrammar.g:4560:2: ( '>' )
+                    // InternalEntityGrammar.g:4561:3: '>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
@@ -16668,10 +16873,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4524:2: ( '<' )
+                    // InternalEntityGrammar.g:4566:2: ( '<' )
                     {
-                    // InternalEntityGrammar.g:4524:2: ( '<' )
-                    // InternalEntityGrammar.g:4525:3: '<'
+                    // InternalEntityGrammar.g:4566:2: ( '<' )
+                    // InternalEntityGrammar.g:4567:3: '<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
@@ -16704,21 +16909,21 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives"
-    // InternalEntityGrammar.g:4534:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );
+    // InternalEntityGrammar.g:4576:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );
     public final void rule__OpOther__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4538:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
-            int alt36=9;
-            alt36 = dfa36.predict(input);
-            switch (alt36) {
+            // InternalEntityGrammar.g:4580:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
+            int alt38=9;
+            alt38 = dfa38.predict(input);
+            switch (alt38) {
                 case 1 :
-                    // InternalEntityGrammar.g:4539:2: ( '->' )
+                    // InternalEntityGrammar.g:4581:2: ( '->' )
                     {
-                    // InternalEntityGrammar.g:4539:2: ( '->' )
-                    // InternalEntityGrammar.g:4540:3: '->'
+                    // InternalEntityGrammar.g:4581:2: ( '->' )
+                    // InternalEntityGrammar.g:4582:3: '->'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
@@ -16734,10 +16939,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4545:2: ( '..<' )
+                    // InternalEntityGrammar.g:4587:2: ( '..<' )
                     {
-                    // InternalEntityGrammar.g:4545:2: ( '..<' )
-                    // InternalEntityGrammar.g:4546:3: '..<'
+                    // InternalEntityGrammar.g:4587:2: ( '..<' )
+                    // InternalEntityGrammar.g:4588:3: '..<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
@@ -16753,16 +16958,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4551:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalEntityGrammar.g:4593:2: ( ( rule__OpOther__Group_2__0 ) )
                     {
-                    // InternalEntityGrammar.g:4551:2: ( ( rule__OpOther__Group_2__0 ) )
-                    // InternalEntityGrammar.g:4552:3: ( rule__OpOther__Group_2__0 )
+                    // InternalEntityGrammar.g:4593:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalEntityGrammar.g:4594:3: ( rule__OpOther__Group_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_2()); 
                     }
-                    // InternalEntityGrammar.g:4553:3: ( rule__OpOther__Group_2__0 )
-                    // InternalEntityGrammar.g:4553:4: rule__OpOther__Group_2__0
+                    // InternalEntityGrammar.g:4595:3: ( rule__OpOther__Group_2__0 )
+                    // InternalEntityGrammar.g:4595:4: rule__OpOther__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_2__0();
@@ -16782,10 +16987,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4557:2: ( '..' )
+                    // InternalEntityGrammar.g:4599:2: ( '..' )
                     {
-                    // InternalEntityGrammar.g:4557:2: ( '..' )
-                    // InternalEntityGrammar.g:4558:3: '..'
+                    // InternalEntityGrammar.g:4599:2: ( '..' )
+                    // InternalEntityGrammar.g:4600:3: '..'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
@@ -16801,10 +17006,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:4563:2: ( '=>' )
+                    // InternalEntityGrammar.g:4605:2: ( '=>' )
                     {
-                    // InternalEntityGrammar.g:4563:2: ( '=>' )
-                    // InternalEntityGrammar.g:4564:3: '=>'
+                    // InternalEntityGrammar.g:4605:2: ( '=>' )
+                    // InternalEntityGrammar.g:4606:3: '=>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
@@ -16820,16 +17025,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:4569:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalEntityGrammar.g:4611:2: ( ( rule__OpOther__Group_5__0 ) )
                     {
-                    // InternalEntityGrammar.g:4569:2: ( ( rule__OpOther__Group_5__0 ) )
-                    // InternalEntityGrammar.g:4570:3: ( rule__OpOther__Group_5__0 )
+                    // InternalEntityGrammar.g:4611:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalEntityGrammar.g:4612:3: ( rule__OpOther__Group_5__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_5()); 
                     }
-                    // InternalEntityGrammar.g:4571:3: ( rule__OpOther__Group_5__0 )
-                    // InternalEntityGrammar.g:4571:4: rule__OpOther__Group_5__0
+                    // InternalEntityGrammar.g:4613:3: ( rule__OpOther__Group_5__0 )
+                    // InternalEntityGrammar.g:4613:4: rule__OpOther__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_5__0();
@@ -16849,16 +17054,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalEntityGrammar.g:4575:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalEntityGrammar.g:4617:2: ( ( rule__OpOther__Group_6__0 ) )
                     {
-                    // InternalEntityGrammar.g:4575:2: ( ( rule__OpOther__Group_6__0 ) )
-                    // InternalEntityGrammar.g:4576:3: ( rule__OpOther__Group_6__0 )
+                    // InternalEntityGrammar.g:4617:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalEntityGrammar.g:4618:3: ( rule__OpOther__Group_6__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_6()); 
                     }
-                    // InternalEntityGrammar.g:4577:3: ( rule__OpOther__Group_6__0 )
-                    // InternalEntityGrammar.g:4577:4: rule__OpOther__Group_6__0
+                    // InternalEntityGrammar.g:4619:3: ( rule__OpOther__Group_6__0 )
+                    // InternalEntityGrammar.g:4619:4: rule__OpOther__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_6__0();
@@ -16878,10 +17083,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalEntityGrammar.g:4581:2: ( '<>' )
+                    // InternalEntityGrammar.g:4623:2: ( '<>' )
                     {
-                    // InternalEntityGrammar.g:4581:2: ( '<>' )
-                    // InternalEntityGrammar.g:4582:3: '<>'
+                    // InternalEntityGrammar.g:4623:2: ( '<>' )
+                    // InternalEntityGrammar.g:4624:3: '<>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
@@ -16897,10 +17102,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalEntityGrammar.g:4587:2: ( '?:' )
+                    // InternalEntityGrammar.g:4629:2: ( '?:' )
                     {
-                    // InternalEntityGrammar.g:4587:2: ( '?:' )
-                    // InternalEntityGrammar.g:4588:3: '?:'
+                    // InternalEntityGrammar.g:4629:2: ( '?:' )
+                    // InternalEntityGrammar.g:4630:3: '?:'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
@@ -16933,29 +17138,29 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives_5_1"
-    // InternalEntityGrammar.g:4597:1: rule__OpOther__Alternatives_5_1 : ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) );
+    // InternalEntityGrammar.g:4639:1: rule__OpOther__Alternatives_5_1 : ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) );
     public final void rule__OpOther__Alternatives_5_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4601:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
-            int alt37=2;
-            int LA37_0 = input.LA(1);
+            // InternalEntityGrammar.g:4643:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
+            int alt39=2;
+            int LA39_0 = input.LA(1);
 
-            if ( (LA37_0==45) ) {
-                int LA37_1 = input.LA(2);
+            if ( (LA39_0==45) ) {
+                int LA39_1 = input.LA(2);
 
-                if ( (LA37_1==EOF||(LA37_1>=RULE_ID && LA37_1<=RULE_STRING)||(LA37_1>=33 && LA37_1<=34)||LA37_1==46||LA37_1==57||(LA37_1>=62 && LA37_1<=67)||LA37_1==88||LA37_1==90||LA37_1==99||LA37_1==135||LA37_1==138||LA37_1==140||(LA37_1>=144 && LA37_1<=152)||LA37_1==154||LA37_1==179) ) {
-                    alt37=2;
+                if ( (LA39_1==45) ) {
+                    alt39=1;
                 }
-                else if ( (LA37_1==45) ) {
-                    alt37=1;
+                else if ( (LA39_1==EOF||(LA39_1>=RULE_ID && LA39_1<=RULE_STRING)||(LA39_1>=33 && LA39_1<=34)||LA39_1==46||LA39_1==57||(LA39_1>=62 && LA39_1<=67)||LA39_1==88||LA39_1==90||LA39_1==99||LA39_1==135||LA39_1==138||LA39_1==140||(LA39_1>=144 && LA39_1<=152)||LA39_1==154||LA39_1==182) ) {
+                    alt39=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 37, 1, input);
+                        new NoViableAltException("", 39, 1, input);
 
                     throw nvae;
                 }
@@ -16963,22 +17168,22 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 37, 0, input);
+                    new NoViableAltException("", 39, 0, input);
 
                 throw nvae;
             }
-            switch (alt37) {
+            switch (alt39) {
                 case 1 :
-                    // InternalEntityGrammar.g:4602:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalEntityGrammar.g:4644:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4602:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
-                    // InternalEntityGrammar.g:4603:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalEntityGrammar.g:4644:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalEntityGrammar.g:4645:3: ( rule__OpOther__Group_5_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); 
                     }
-                    // InternalEntityGrammar.g:4604:3: ( rule__OpOther__Group_5_1_0__0 )
-                    // InternalEntityGrammar.g:4604:4: rule__OpOther__Group_5_1_0__0
+                    // InternalEntityGrammar.g:4646:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalEntityGrammar.g:4646:4: rule__OpOther__Group_5_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_5_1_0__0();
@@ -16998,10 +17203,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4608:2: ( '>' )
+                    // InternalEntityGrammar.g:4650:2: ( '>' )
                     {
-                    // InternalEntityGrammar.g:4608:2: ( '>' )
-                    // InternalEntityGrammar.g:4609:3: '>'
+                    // InternalEntityGrammar.g:4650:2: ( '>' )
+                    // InternalEntityGrammar.g:4651:3: '>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
@@ -17034,55 +17239,55 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives_6_1"
-    // InternalEntityGrammar.g:4618:1: rule__OpOther__Alternatives_6_1 : ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) );
+    // InternalEntityGrammar.g:4660:1: rule__OpOther__Alternatives_6_1 : ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) );
     public final void rule__OpOther__Alternatives_6_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4622:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
-            int alt38=3;
-            int LA38_0 = input.LA(1);
+            // InternalEntityGrammar.g:4664:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
+            int alt40=3;
+            int LA40_0 = input.LA(1);
 
-            if ( (LA38_0==46) ) {
-                int LA38_1 = input.LA(2);
+            if ( (LA40_0==46) ) {
+                int LA40_1 = input.LA(2);
 
-                if ( (synpred104_InternalEntityGrammar()) ) {
-                    alt38=1;
+                if ( (synpred106_InternalEntityGrammar()) ) {
+                    alt40=1;
                 }
-                else if ( (synpred105_InternalEntityGrammar()) ) {
-                    alt38=2;
+                else if ( (synpred107_InternalEntityGrammar()) ) {
+                    alt40=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 38, 1, input);
+                        new NoViableAltException("", 40, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA38_0==50) ) {
-                alt38=3;
+            else if ( (LA40_0==50) ) {
+                alt40=3;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 38, 0, input);
+                    new NoViableAltException("", 40, 0, input);
 
                 throw nvae;
             }
-            switch (alt38) {
+            switch (alt40) {
                 case 1 :
-                    // InternalEntityGrammar.g:4623:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalEntityGrammar.g:4665:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4623:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
-                    // InternalEntityGrammar.g:4624:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalEntityGrammar.g:4665:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalEntityGrammar.g:4666:3: ( rule__OpOther__Group_6_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
                     }
-                    // InternalEntityGrammar.g:4625:3: ( rule__OpOther__Group_6_1_0__0 )
-                    // InternalEntityGrammar.g:4625:4: rule__OpOther__Group_6_1_0__0
+                    // InternalEntityGrammar.g:4667:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalEntityGrammar.g:4667:4: rule__OpOther__Group_6_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_6_1_0__0();
@@ -17102,10 +17307,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4629:2: ( '<' )
+                    // InternalEntityGrammar.g:4671:2: ( '<' )
                     {
-                    // InternalEntityGrammar.g:4629:2: ( '<' )
-                    // InternalEntityGrammar.g:4630:3: '<'
+                    // InternalEntityGrammar.g:4671:2: ( '<' )
+                    // InternalEntityGrammar.g:4672:3: '<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
@@ -17121,10 +17326,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4635:2: ( '=>' )
+                    // InternalEntityGrammar.g:4677:2: ( '=>' )
                     {
-                    // InternalEntityGrammar.g:4635:2: ( '=>' )
-                    // InternalEntityGrammar.g:4636:3: '=>'
+                    // InternalEntityGrammar.g:4677:2: ( '=>' )
+                    // InternalEntityGrammar.g:4678:3: '=>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
@@ -17157,35 +17362,35 @@
 
 
     // $ANTLR start "rule__OpAdd__Alternatives"
-    // InternalEntityGrammar.g:4645:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
+    // InternalEntityGrammar.g:4687:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
     public final void rule__OpAdd__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4649:1: ( ( '+' ) | ( '-' ) )
-            int alt39=2;
-            int LA39_0 = input.LA(1);
+            // InternalEntityGrammar.g:4691:1: ( ( '+' ) | ( '-' ) )
+            int alt41=2;
+            int LA41_0 = input.LA(1);
 
-            if ( (LA39_0==33) ) {
-                alt39=1;
+            if ( (LA41_0==33) ) {
+                alt41=1;
             }
-            else if ( (LA39_0==34) ) {
-                alt39=2;
+            else if ( (LA41_0==34) ) {
+                alt41=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 39, 0, input);
+                    new NoViableAltException("", 41, 0, input);
 
                 throw nvae;
             }
-            switch (alt39) {
+            switch (alt41) {
                 case 1 :
-                    // InternalEntityGrammar.g:4650:2: ( '+' )
+                    // InternalEntityGrammar.g:4692:2: ( '+' )
                     {
-                    // InternalEntityGrammar.g:4650:2: ( '+' )
-                    // InternalEntityGrammar.g:4651:3: '+'
+                    // InternalEntityGrammar.g:4692:2: ( '+' )
+                    // InternalEntityGrammar.g:4693:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
@@ -17201,10 +17406,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4656:2: ( '-' )
+                    // InternalEntityGrammar.g:4698:2: ( '-' )
                     {
-                    // InternalEntityGrammar.g:4656:2: ( '-' )
-                    // InternalEntityGrammar.g:4657:3: '-'
+                    // InternalEntityGrammar.g:4698:2: ( '-' )
+                    // InternalEntityGrammar.g:4699:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
@@ -17237,49 +17442,49 @@
 
 
     // $ANTLR start "rule__OpMulti__Alternatives"
-    // InternalEntityGrammar.g:4666:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
+    // InternalEntityGrammar.g:4708:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
     public final void rule__OpMulti__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4670:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
-            int alt40=4;
+            // InternalEntityGrammar.g:4712:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
+            int alt42=4;
             switch ( input.LA(1) ) {
             case 53:
                 {
-                alt40=1;
+                alt42=1;
                 }
                 break;
             case 54:
                 {
-                alt40=2;
+                alt42=2;
                 }
                 break;
             case 55:
                 {
-                alt40=3;
+                alt42=3;
                 }
                 break;
             case 56:
                 {
-                alt40=4;
+                alt42=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 40, 0, input);
+                    new NoViableAltException("", 42, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt40) {
+            switch (alt42) {
                 case 1 :
-                    // InternalEntityGrammar.g:4671:2: ( '*' )
+                    // InternalEntityGrammar.g:4713:2: ( '*' )
                     {
-                    // InternalEntityGrammar.g:4671:2: ( '*' )
-                    // InternalEntityGrammar.g:4672:3: '*'
+                    // InternalEntityGrammar.g:4713:2: ( '*' )
+                    // InternalEntityGrammar.g:4714:3: '*'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
@@ -17295,10 +17500,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4677:2: ( '**' )
+                    // InternalEntityGrammar.g:4719:2: ( '**' )
                     {
-                    // InternalEntityGrammar.g:4677:2: ( '**' )
-                    // InternalEntityGrammar.g:4678:3: '**'
+                    // InternalEntityGrammar.g:4719:2: ( '**' )
+                    // InternalEntityGrammar.g:4720:3: '**'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
@@ -17314,10 +17519,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4683:2: ( '/' )
+                    // InternalEntityGrammar.g:4725:2: ( '/' )
                     {
-                    // InternalEntityGrammar.g:4683:2: ( '/' )
-                    // InternalEntityGrammar.g:4684:3: '/'
+                    // InternalEntityGrammar.g:4725:2: ( '/' )
+                    // InternalEntityGrammar.g:4726:3: '/'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
@@ -17333,10 +17538,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4689:2: ( '%' )
+                    // InternalEntityGrammar.g:4731:2: ( '%' )
                     {
-                    // InternalEntityGrammar.g:4689:2: ( '%' )
-                    // InternalEntityGrammar.g:4690:3: '%'
+                    // InternalEntityGrammar.g:4731:2: ( '%' )
+                    // InternalEntityGrammar.g:4732:3: '%'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
@@ -17369,41 +17574,41 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Alternatives"
-    // InternalEntityGrammar.g:4699:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
+    // InternalEntityGrammar.g:4741:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
     public final void rule__XUnaryOperation__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4703:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
-            int alt41=2;
-            int LA41_0 = input.LA(1);
+            // InternalEntityGrammar.g:4745:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
+            int alt43=2;
+            int LA43_0 = input.LA(1);
 
-            if ( ((LA41_0>=33 && LA41_0<=34)||LA41_0==57) ) {
-                alt41=1;
+            if ( ((LA43_0>=33 && LA43_0<=34)||LA43_0==57) ) {
+                alt43=1;
             }
-            else if ( ((LA41_0>=RULE_ID && LA41_0<=RULE_STRING)||LA41_0==46||(LA41_0>=62 && LA41_0<=67)||LA41_0==88||LA41_0==90||LA41_0==99||LA41_0==135||LA41_0==138||LA41_0==140||(LA41_0>=144 && LA41_0<=152)||LA41_0==154||LA41_0==179) ) {
-                alt41=2;
+            else if ( ((LA43_0>=RULE_ID && LA43_0<=RULE_STRING)||LA43_0==46||(LA43_0>=62 && LA43_0<=67)||LA43_0==88||LA43_0==90||LA43_0==99||LA43_0==135||LA43_0==138||LA43_0==140||(LA43_0>=144 && LA43_0<=152)||LA43_0==154||LA43_0==182) ) {
+                alt43=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 41, 0, input);
+                    new NoViableAltException("", 43, 0, input);
 
                 throw nvae;
             }
-            switch (alt41) {
+            switch (alt43) {
                 case 1 :
-                    // InternalEntityGrammar.g:4704:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalEntityGrammar.g:4746:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4704:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
-                    // InternalEntityGrammar.g:4705:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalEntityGrammar.g:4746:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalEntityGrammar.g:4747:3: ( rule__XUnaryOperation__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); 
                     }
-                    // InternalEntityGrammar.g:4706:3: ( rule__XUnaryOperation__Group_0__0 )
-                    // InternalEntityGrammar.g:4706:4: rule__XUnaryOperation__Group_0__0
+                    // InternalEntityGrammar.g:4748:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalEntityGrammar.g:4748:4: rule__XUnaryOperation__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XUnaryOperation__Group_0__0();
@@ -17423,10 +17628,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4710:2: ( ruleXCastedExpression )
+                    // InternalEntityGrammar.g:4752:2: ( ruleXCastedExpression )
                     {
-                    // InternalEntityGrammar.g:4710:2: ( ruleXCastedExpression )
-                    // InternalEntityGrammar.g:4711:3: ruleXCastedExpression
+                    // InternalEntityGrammar.g:4752:2: ( ruleXCastedExpression )
+                    // InternalEntityGrammar.g:4753:3: ruleXCastedExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
@@ -17463,44 +17668,44 @@
 
 
     // $ANTLR start "rule__OpUnary__Alternatives"
-    // InternalEntityGrammar.g:4720:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
+    // InternalEntityGrammar.g:4762:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
     public final void rule__OpUnary__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4724:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
-            int alt42=3;
+            // InternalEntityGrammar.g:4766:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
+            int alt44=3;
             switch ( input.LA(1) ) {
             case 57:
                 {
-                alt42=1;
+                alt44=1;
                 }
                 break;
             case 34:
                 {
-                alt42=2;
+                alt44=2;
                 }
                 break;
             case 33:
                 {
-                alt42=3;
+                alt44=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 42, 0, input);
+                    new NoViableAltException("", 44, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt42) {
+            switch (alt44) {
                 case 1 :
-                    // InternalEntityGrammar.g:4725:2: ( '!' )
+                    // InternalEntityGrammar.g:4767:2: ( '!' )
                     {
-                    // InternalEntityGrammar.g:4725:2: ( '!' )
-                    // InternalEntityGrammar.g:4726:3: '!'
+                    // InternalEntityGrammar.g:4767:2: ( '!' )
+                    // InternalEntityGrammar.g:4768:3: '!'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
@@ -17516,10 +17721,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4731:2: ( '-' )
+                    // InternalEntityGrammar.g:4773:2: ( '-' )
                     {
-                    // InternalEntityGrammar.g:4731:2: ( '-' )
-                    // InternalEntityGrammar.g:4732:3: '-'
+                    // InternalEntityGrammar.g:4773:2: ( '-' )
+                    // InternalEntityGrammar.g:4774:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
@@ -17535,10 +17740,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4737:2: ( '+' )
+                    // InternalEntityGrammar.g:4779:2: ( '+' )
                     {
-                    // InternalEntityGrammar.g:4737:2: ( '+' )
-                    // InternalEntityGrammar.g:4738:3: '+'
+                    // InternalEntityGrammar.g:4779:2: ( '+' )
+                    // InternalEntityGrammar.g:4780:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
@@ -17571,35 +17776,35 @@
 
 
     // $ANTLR start "rule__OpPostfix__Alternatives"
-    // InternalEntityGrammar.g:4747:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
+    // InternalEntityGrammar.g:4789:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
     public final void rule__OpPostfix__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4751:1: ( ( '++' ) | ( '--' ) )
-            int alt43=2;
-            int LA43_0 = input.LA(1);
+            // InternalEntityGrammar.g:4793:1: ( ( '++' ) | ( '--' ) )
+            int alt45=2;
+            int LA45_0 = input.LA(1);
 
-            if ( (LA43_0==58) ) {
-                alt43=1;
+            if ( (LA45_0==58) ) {
+                alt45=1;
             }
-            else if ( (LA43_0==59) ) {
-                alt43=2;
+            else if ( (LA45_0==59) ) {
+                alt45=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 43, 0, input);
+                    new NoViableAltException("", 45, 0, input);
 
                 throw nvae;
             }
-            switch (alt43) {
+            switch (alt45) {
                 case 1 :
-                    // InternalEntityGrammar.g:4752:2: ( '++' )
+                    // InternalEntityGrammar.g:4794:2: ( '++' )
                     {
-                    // InternalEntityGrammar.g:4752:2: ( '++' )
-                    // InternalEntityGrammar.g:4753:3: '++'
+                    // InternalEntityGrammar.g:4794:2: ( '++' )
+                    // InternalEntityGrammar.g:4795:3: '++'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
@@ -17615,10 +17820,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4758:2: ( '--' )
+                    // InternalEntityGrammar.g:4800:2: ( '--' )
                     {
-                    // InternalEntityGrammar.g:4758:2: ( '--' )
-                    // InternalEntityGrammar.g:4759:3: '--'
+                    // InternalEntityGrammar.g:4800:2: ( '--' )
+                    // InternalEntityGrammar.g:4801:3: '--'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
@@ -17651,27 +17856,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1"
-    // InternalEntityGrammar.g:4768:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );
+    // InternalEntityGrammar.g:4810:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4772:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
-            int alt44=2;
-            alt44 = dfa44.predict(input);
-            switch (alt44) {
+            // InternalEntityGrammar.g:4814:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
+            int alt46=2;
+            alt46 = dfa46.predict(input);
+            switch (alt46) {
                 case 1 :
-                    // InternalEntityGrammar.g:4773:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalEntityGrammar.g:4815:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4773:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
-                    // InternalEntityGrammar.g:4774:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalEntityGrammar.g:4815:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalEntityGrammar.g:4816:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); 
                     }
-                    // InternalEntityGrammar.g:4775:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
-                    // InternalEntityGrammar.g:4775:4: rule__XMemberFeatureCall__Group_1_0__0
+                    // InternalEntityGrammar.g:4817:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalEntityGrammar.g:4817:4: rule__XMemberFeatureCall__Group_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_0__0();
@@ -17691,16 +17896,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4779:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalEntityGrammar.g:4821:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:4779:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
-                    // InternalEntityGrammar.g:4780:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalEntityGrammar.g:4821:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalEntityGrammar.g:4822:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); 
                     }
-                    // InternalEntityGrammar.g:4781:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
-                    // InternalEntityGrammar.g:4781:4: rule__XMemberFeatureCall__Group_1_1__0
+                    // InternalEntityGrammar.g:4823:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalEntityGrammar.g:4823:4: rule__XMemberFeatureCall__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1__0();
@@ -17737,35 +17942,35 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_0_0_0_1"
-    // InternalEntityGrammar.g:4789:1: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) );
+    // InternalEntityGrammar.g:4831:1: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1_0_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4793:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
-            int alt45=2;
-            int LA45_0 = input.LA(1);
+            // InternalEntityGrammar.g:4835:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
+            int alt47=2;
+            int LA47_0 = input.LA(1);
 
-            if ( (LA45_0==60) ) {
-                alt45=1;
+            if ( (LA47_0==60) ) {
+                alt47=1;
             }
-            else if ( (LA45_0==176) ) {
-                alt45=2;
+            else if ( (LA47_0==179) ) {
+                alt47=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 45, 0, input);
+                    new NoViableAltException("", 47, 0, input);
 
                 throw nvae;
             }
-            switch (alt45) {
+            switch (alt47) {
                 case 1 :
-                    // InternalEntityGrammar.g:4794:2: ( '.' )
+                    // InternalEntityGrammar.g:4836:2: ( '.' )
                     {
-                    // InternalEntityGrammar.g:4794:2: ( '.' )
-                    // InternalEntityGrammar.g:4795:3: '.'
+                    // InternalEntityGrammar.g:4836:2: ( '.' )
+                    // InternalEntityGrammar.g:4837:3: '.'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); 
@@ -17781,16 +17986,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4800:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalEntityGrammar.g:4842:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
                     {
-                    // InternalEntityGrammar.g:4800:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
-                    // InternalEntityGrammar.g:4801:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalEntityGrammar.g:4842:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalEntityGrammar.g:4843:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); 
                     }
-                    // InternalEntityGrammar.g:4802:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
-                    // InternalEntityGrammar.g:4802:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
+                    // InternalEntityGrammar.g:4844:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalEntityGrammar.g:4844:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1();
@@ -17827,44 +18032,44 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_1_0_0_1"
-    // InternalEntityGrammar.g:4810:1: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) );
+    // InternalEntityGrammar.g:4852:1: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4814:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
-            int alt46=3;
+            // InternalEntityGrammar.g:4856:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
+            int alt48=3;
             switch ( input.LA(1) ) {
             case 60:
                 {
-                alt46=1;
+                alt48=1;
                 }
                 break;
-            case 177:
+            case 180:
                 {
-                alt46=2;
+                alt48=2;
                 }
                 break;
-            case 176:
+            case 179:
                 {
-                alt46=3;
+                alt48=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 46, 0, input);
+                    new NoViableAltException("", 48, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt46) {
+            switch (alt48) {
                 case 1 :
-                    // InternalEntityGrammar.g:4815:2: ( '.' )
+                    // InternalEntityGrammar.g:4857:2: ( '.' )
                     {
-                    // InternalEntityGrammar.g:4815:2: ( '.' )
-                    // InternalEntityGrammar.g:4816:3: '.'
+                    // InternalEntityGrammar.g:4857:2: ( '.' )
+                    // InternalEntityGrammar.g:4858:3: '.'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); 
@@ -17880,16 +18085,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4821:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalEntityGrammar.g:4863:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
                     {
-                    // InternalEntityGrammar.g:4821:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
-                    // InternalEntityGrammar.g:4822:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalEntityGrammar.g:4863:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalEntityGrammar.g:4864:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); 
                     }
-                    // InternalEntityGrammar.g:4823:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
-                    // InternalEntityGrammar.g:4823:4: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1
+                    // InternalEntityGrammar.g:4865:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalEntityGrammar.g:4865:4: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1();
@@ -17909,16 +18114,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4827:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalEntityGrammar.g:4869:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
                     {
-                    // InternalEntityGrammar.g:4827:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
-                    // InternalEntityGrammar.g:4828:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalEntityGrammar.g:4869:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalEntityGrammar.g:4870:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); 
                     }
-                    // InternalEntityGrammar.g:4829:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
-                    // InternalEntityGrammar.g:4829:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2
+                    // InternalEntityGrammar.g:4871:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalEntityGrammar.g:4871:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2();
@@ -17955,27 +18160,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_1_3_1"
-    // InternalEntityGrammar.g:4837: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 ) ) );
+    // InternalEntityGrammar.g:4879:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1_1_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4841:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
-            int alt47=2;
-            alt47 = dfa47.predict(input);
-            switch (alt47) {
+            // InternalEntityGrammar.g:4883:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
+            int alt49=2;
+            alt49 = dfa49.predict(input);
+            switch (alt49) {
                 case 1 :
-                    // InternalEntityGrammar.g:4842:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalEntityGrammar.g:4884:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
                     {
-                    // InternalEntityGrammar.g:4842:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
-                    // InternalEntityGrammar.g:4843:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalEntityGrammar.g:4884:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalEntityGrammar.g:4885:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
                     }
-                    // InternalEntityGrammar.g:4844:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
-                    // InternalEntityGrammar.g:4844:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
+                    // InternalEntityGrammar.g:4886:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalEntityGrammar.g:4886:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0();
@@ -17995,16 +18200,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4848:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalEntityGrammar.g:4890:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:4848:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
-                    // InternalEntityGrammar.g:4849:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalEntityGrammar.g:4890:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalEntityGrammar.g:4891:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); 
                     }
-                    // InternalEntityGrammar.g:4850:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
-                    // InternalEntityGrammar.g:4850:4: rule__XMemberFeatureCall__Group_1_1_3_1_1__0
+                    // InternalEntityGrammar.g:4892:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalEntityGrammar.g:4892:4: rule__XMemberFeatureCall__Group_1_1_3_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_3_1_1__0();
@@ -18041,21 +18246,21 @@
 
 
     // $ANTLR start "rule__XPrimaryExpression__Alternatives"
-    // InternalEntityGrammar.g:4858:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );
+    // InternalEntityGrammar.g:4900:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );
     public final void rule__XPrimaryExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4862:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
-            int alt48=15;
-            alt48 = dfa48.predict(input);
-            switch (alt48) {
+            // InternalEntityGrammar.g:4904:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
+            int alt50=15;
+            alt50 = dfa50.predict(input);
+            switch (alt50) {
                 case 1 :
-                    // InternalEntityGrammar.g:4863:2: ( ruleXConstructorCall )
+                    // InternalEntityGrammar.g:4905:2: ( ruleXConstructorCall )
                     {
-                    // InternalEntityGrammar.g:4863:2: ( ruleXConstructorCall )
-                    // InternalEntityGrammar.g:4864:3: ruleXConstructorCall
+                    // InternalEntityGrammar.g:4905:2: ( ruleXConstructorCall )
+                    // InternalEntityGrammar.g:4906:3: ruleXConstructorCall
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
@@ -18075,10 +18280,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4869:2: ( ruleXBlockExpression )
+                    // InternalEntityGrammar.g:4911:2: ( ruleXBlockExpression )
                     {
-                    // InternalEntityGrammar.g:4869:2: ( ruleXBlockExpression )
-                    // InternalEntityGrammar.g:4870:3: ruleXBlockExpression
+                    // InternalEntityGrammar.g:4911:2: ( ruleXBlockExpression )
+                    // InternalEntityGrammar.g:4912:3: ruleXBlockExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
@@ -18098,10 +18303,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4875:2: ( ruleXSwitchExpression )
+                    // InternalEntityGrammar.g:4917:2: ( ruleXSwitchExpression )
                     {
-                    // InternalEntityGrammar.g:4875:2: ( ruleXSwitchExpression )
-                    // InternalEntityGrammar.g:4876:3: ruleXSwitchExpression
+                    // InternalEntityGrammar.g:4917:2: ( ruleXSwitchExpression )
+                    // InternalEntityGrammar.g:4918:3: ruleXSwitchExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
@@ -18121,16 +18326,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4881:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalEntityGrammar.g:4923:2: ( ( ruleXSynchronizedExpression ) )
                     {
-                    // InternalEntityGrammar.g:4881:2: ( ( ruleXSynchronizedExpression ) )
-                    // InternalEntityGrammar.g:4882:3: ( ruleXSynchronizedExpression )
+                    // InternalEntityGrammar.g:4923:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalEntityGrammar.g:4924:3: ( ruleXSynchronizedExpression )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
                     }
-                    // InternalEntityGrammar.g:4883:3: ( ruleXSynchronizedExpression )
-                    // InternalEntityGrammar.g:4883:4: ruleXSynchronizedExpression
+                    // InternalEntityGrammar.g:4925:3: ( ruleXSynchronizedExpression )
+                    // InternalEntityGrammar.g:4925:4: ruleXSynchronizedExpression
                     {
                     pushFollow(FOLLOW_2);
                     ruleXSynchronizedExpression();
@@ -18150,10 +18355,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:4887:2: ( ruleXFeatureCall )
+                    // InternalEntityGrammar.g:4929:2: ( ruleXFeatureCall )
                     {
-                    // InternalEntityGrammar.g:4887:2: ( ruleXFeatureCall )
-                    // InternalEntityGrammar.g:4888:3: ruleXFeatureCall
+                    // InternalEntityGrammar.g:4929:2: ( ruleXFeatureCall )
+                    // InternalEntityGrammar.g:4930:3: ruleXFeatureCall
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); 
@@ -18173,10 +18378,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:4893:2: ( ruleXLiteral )
+                    // InternalEntityGrammar.g:4935:2: ( ruleXLiteral )
                     {
-                    // InternalEntityGrammar.g:4893:2: ( ruleXLiteral )
-                    // InternalEntityGrammar.g:4894:3: ruleXLiteral
+                    // InternalEntityGrammar.g:4935:2: ( ruleXLiteral )
+                    // InternalEntityGrammar.g:4936:3: ruleXLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); 
@@ -18196,10 +18401,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalEntityGrammar.g:4899:2: ( ruleXIfExpression )
+                    // InternalEntityGrammar.g:4941:2: ( ruleXIfExpression )
                     {
-                    // InternalEntityGrammar.g:4899:2: ( ruleXIfExpression )
-                    // InternalEntityGrammar.g:4900:3: ruleXIfExpression
+                    // InternalEntityGrammar.g:4941:2: ( ruleXIfExpression )
+                    // InternalEntityGrammar.g:4942:3: ruleXIfExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); 
@@ -18219,16 +18424,16 @@
                     }
                     break;
                 case 8 :
-                    // InternalEntityGrammar.g:4905:2: ( ( ruleXForLoopExpression ) )
+                    // InternalEntityGrammar.g:4947:2: ( ( ruleXForLoopExpression ) )
                     {
-                    // InternalEntityGrammar.g:4905:2: ( ( ruleXForLoopExpression ) )
-                    // InternalEntityGrammar.g:4906:3: ( ruleXForLoopExpression )
+                    // InternalEntityGrammar.g:4947:2: ( ( ruleXForLoopExpression ) )
+                    // InternalEntityGrammar.g:4948:3: ( ruleXForLoopExpression )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
                     }
-                    // InternalEntityGrammar.g:4907:3: ( ruleXForLoopExpression )
-                    // InternalEntityGrammar.g:4907:4: ruleXForLoopExpression
+                    // InternalEntityGrammar.g:4949:3: ( ruleXForLoopExpression )
+                    // InternalEntityGrammar.g:4949:4: ruleXForLoopExpression
                     {
                     pushFollow(FOLLOW_2);
                     ruleXForLoopExpression();
@@ -18248,10 +18453,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalEntityGrammar.g:4911:2: ( ruleXBasicForLoopExpression )
+                    // InternalEntityGrammar.g:4953:2: ( ruleXBasicForLoopExpression )
                     {
-                    // InternalEntityGrammar.g:4911:2: ( ruleXBasicForLoopExpression )
-                    // InternalEntityGrammar.g:4912:3: ruleXBasicForLoopExpression
+                    // InternalEntityGrammar.g:4953:2: ( ruleXBasicForLoopExpression )
+                    // InternalEntityGrammar.g:4954:3: ruleXBasicForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
@@ -18271,10 +18476,10 @@
                     }
                     break;
                 case 10 :
-                    // InternalEntityGrammar.g:4917:2: ( ruleXWhileExpression )
+                    // InternalEntityGrammar.g:4959:2: ( ruleXWhileExpression )
                     {
-                    // InternalEntityGrammar.g:4917:2: ( ruleXWhileExpression )
-                    // InternalEntityGrammar.g:4918:3: ruleXWhileExpression
+                    // InternalEntityGrammar.g:4959:2: ( ruleXWhileExpression )
+                    // InternalEntityGrammar.g:4960:3: ruleXWhileExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); 
@@ -18294,10 +18499,10 @@
                     }
                     break;
                 case 11 :
-                    // InternalEntityGrammar.g:4923:2: ( ruleXDoWhileExpression )
+                    // InternalEntityGrammar.g:4965:2: ( ruleXDoWhileExpression )
                     {
-                    // InternalEntityGrammar.g:4923:2: ( ruleXDoWhileExpression )
-                    // InternalEntityGrammar.g:4924:3: ruleXDoWhileExpression
+                    // InternalEntityGrammar.g:4965:2: ( ruleXDoWhileExpression )
+                    // InternalEntityGrammar.g:4966:3: ruleXDoWhileExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); 
@@ -18317,10 +18522,10 @@
                     }
                     break;
                 case 12 :
-                    // InternalEntityGrammar.g:4929:2: ( ruleXThrowExpression )
+                    // InternalEntityGrammar.g:4971:2: ( ruleXThrowExpression )
                     {
-                    // InternalEntityGrammar.g:4929:2: ( ruleXThrowExpression )
-                    // InternalEntityGrammar.g:4930:3: ruleXThrowExpression
+                    // InternalEntityGrammar.g:4971:2: ( ruleXThrowExpression )
+                    // InternalEntityGrammar.g:4972:3: ruleXThrowExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); 
@@ -18340,10 +18545,10 @@
                     }
                     break;
                 case 13 :
-                    // InternalEntityGrammar.g:4935:2: ( ruleXReturnExpression )
+                    // InternalEntityGrammar.g:4977:2: ( ruleXReturnExpression )
                     {
-                    // InternalEntityGrammar.g:4935:2: ( ruleXReturnExpression )
-                    // InternalEntityGrammar.g:4936:3: ruleXReturnExpression
+                    // InternalEntityGrammar.g:4977:2: ( ruleXReturnExpression )
+                    // InternalEntityGrammar.g:4978:3: ruleXReturnExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); 
@@ -18363,10 +18568,10 @@
                     }
                     break;
                 case 14 :
-                    // InternalEntityGrammar.g:4941:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalEntityGrammar.g:4983:2: ( ruleXTryCatchFinallyExpression )
                     {
-                    // InternalEntityGrammar.g:4941:2: ( ruleXTryCatchFinallyExpression )
-                    // InternalEntityGrammar.g:4942:3: ruleXTryCatchFinallyExpression
+                    // InternalEntityGrammar.g:4983:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalEntityGrammar.g:4984:3: ruleXTryCatchFinallyExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); 
@@ -18386,10 +18591,10 @@
                     }
                     break;
                 case 15 :
-                    // InternalEntityGrammar.g:4947:2: ( ruleXParenthesizedExpression )
+                    // InternalEntityGrammar.g:4989:2: ( ruleXParenthesizedExpression )
                     {
-                    // InternalEntityGrammar.g:4947:2: ( ruleXParenthesizedExpression )
-                    // InternalEntityGrammar.g:4948:3: ruleXParenthesizedExpression
+                    // InternalEntityGrammar.g:4989:2: ( ruleXParenthesizedExpression )
+                    // InternalEntityGrammar.g:4990:3: ruleXParenthesizedExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); 
@@ -18426,67 +18631,67 @@
 
 
     // $ANTLR start "rule__XLiteral__Alternatives"
-    // InternalEntityGrammar.g:4957:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
+    // InternalEntityGrammar.g:4999:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
     public final void rule__XLiteral__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4961:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
-            int alt49=7;
+            // InternalEntityGrammar.g:5003:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
+            int alt51=7;
             switch ( input.LA(1) ) {
             case 135:
                 {
-                alt49=1;
+                alt51=1;
                 }
                 break;
             case 99:
                 {
-                alt49=2;
+                alt51=2;
                 }
                 break;
             case 67:
-            case 179:
+            case 182:
                 {
-                alt49=3;
+                alt51=3;
                 }
                 break;
             case RULE_HEX:
             case RULE_INT:
             case RULE_DECIMAL:
                 {
-                alt49=4;
+                alt51=4;
                 }
                 break;
             case 148:
                 {
-                alt49=5;
+                alt51=5;
                 }
                 break;
             case RULE_STRING:
                 {
-                alt49=6;
+                alt51=6;
                 }
                 break;
             case 149:
                 {
-                alt49=7;
+                alt51=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 49, 0, input);
+                    new NoViableAltException("", 51, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt49) {
+            switch (alt51) {
                 case 1 :
-                    // InternalEntityGrammar.g:4962:2: ( ruleXCollectionLiteral )
+                    // InternalEntityGrammar.g:5004:2: ( ruleXCollectionLiteral )
                     {
-                    // InternalEntityGrammar.g:4962:2: ( ruleXCollectionLiteral )
-                    // InternalEntityGrammar.g:4963:3: ruleXCollectionLiteral
+                    // InternalEntityGrammar.g:5004:2: ( ruleXCollectionLiteral )
+                    // InternalEntityGrammar.g:5005:3: ruleXCollectionLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
@@ -18506,16 +18711,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4968:2: ( ( ruleXClosure ) )
+                    // InternalEntityGrammar.g:5010:2: ( ( ruleXClosure ) )
                     {
-                    // InternalEntityGrammar.g:4968:2: ( ( ruleXClosure ) )
-                    // InternalEntityGrammar.g:4969:3: ( ruleXClosure )
+                    // InternalEntityGrammar.g:5010:2: ( ( ruleXClosure ) )
+                    // InternalEntityGrammar.g:5011:3: ( ruleXClosure )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
                     }
-                    // InternalEntityGrammar.g:4970:3: ( ruleXClosure )
-                    // InternalEntityGrammar.g:4970:4: ruleXClosure
+                    // InternalEntityGrammar.g:5012:3: ( ruleXClosure )
+                    // InternalEntityGrammar.g:5012:4: ruleXClosure
                     {
                     pushFollow(FOLLOW_2);
                     ruleXClosure();
@@ -18535,10 +18740,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4974:2: ( ruleXBooleanLiteral )
+                    // InternalEntityGrammar.g:5016:2: ( ruleXBooleanLiteral )
                     {
-                    // InternalEntityGrammar.g:4974:2: ( ruleXBooleanLiteral )
-                    // InternalEntityGrammar.g:4975:3: ruleXBooleanLiteral
+                    // InternalEntityGrammar.g:5016:2: ( ruleXBooleanLiteral )
+                    // InternalEntityGrammar.g:5017:3: ruleXBooleanLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
@@ -18558,10 +18763,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4980:2: ( ruleXNumberLiteral )
+                    // InternalEntityGrammar.g:5022:2: ( ruleXNumberLiteral )
                     {
-                    // InternalEntityGrammar.g:4980:2: ( ruleXNumberLiteral )
-                    // InternalEntityGrammar.g:4981:3: ruleXNumberLiteral
+                    // InternalEntityGrammar.g:5022:2: ( ruleXNumberLiteral )
+                    // InternalEntityGrammar.g:5023:3: ruleXNumberLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
@@ -18581,10 +18786,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:4986:2: ( ruleXNullLiteral )
+                    // InternalEntityGrammar.g:5028:2: ( ruleXNullLiteral )
                     {
-                    // InternalEntityGrammar.g:4986:2: ( ruleXNullLiteral )
-                    // InternalEntityGrammar.g:4987:3: ruleXNullLiteral
+                    // InternalEntityGrammar.g:5028:2: ( ruleXNullLiteral )
+                    // InternalEntityGrammar.g:5029:3: ruleXNullLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
@@ -18604,10 +18809,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:4992:2: ( ruleXStringLiteral )
+                    // InternalEntityGrammar.g:5034:2: ( ruleXStringLiteral )
                     {
-                    // InternalEntityGrammar.g:4992:2: ( ruleXStringLiteral )
-                    // InternalEntityGrammar.g:4993:3: ruleXStringLiteral
+                    // InternalEntityGrammar.g:5034:2: ( ruleXStringLiteral )
+                    // InternalEntityGrammar.g:5035:3: ruleXStringLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
@@ -18627,10 +18832,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalEntityGrammar.g:4998:2: ( ruleXTypeLiteral )
+                    // InternalEntityGrammar.g:5040:2: ( ruleXTypeLiteral )
                     {
-                    // InternalEntityGrammar.g:4998:2: ( ruleXTypeLiteral )
-                    // InternalEntityGrammar.g:4999:3: ruleXTypeLiteral
+                    // InternalEntityGrammar.g:5040:2: ( ruleXTypeLiteral )
+                    // InternalEntityGrammar.g:5041:3: ruleXTypeLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
@@ -18667,29 +18872,29 @@
 
 
     // $ANTLR start "rule__XCollectionLiteral__Alternatives"
-    // InternalEntityGrammar.g:5008:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
+    // InternalEntityGrammar.g:5050:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
     public final void rule__XCollectionLiteral__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5012:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
-            int alt50=2;
-            int LA50_0 = input.LA(1);
+            // InternalEntityGrammar.g:5054:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
+            int alt52=2;
+            int LA52_0 = input.LA(1);
 
-            if ( (LA50_0==135) ) {
-                int LA50_1 = input.LA(2);
+            if ( (LA52_0==135) ) {
+                int LA52_1 = input.LA(2);
 
-                if ( (LA50_1==88) ) {
-                    alt50=1;
+                if ( (LA52_1==88) ) {
+                    alt52=1;
                 }
-                else if ( (LA50_1==99) ) {
-                    alt50=2;
+                else if ( (LA52_1==99) ) {
+                    alt52=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 50, 1, input);
+                        new NoViableAltException("", 52, 1, input);
 
                     throw nvae;
                 }
@@ -18697,16 +18902,16 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 50, 0, input);
+                    new NoViableAltException("", 52, 0, input);
 
                 throw nvae;
             }
-            switch (alt50) {
+            switch (alt52) {
                 case 1 :
-                    // InternalEntityGrammar.g:5013:2: ( ruleXSetLiteral )
+                    // InternalEntityGrammar.g:5055:2: ( ruleXSetLiteral )
                     {
-                    // InternalEntityGrammar.g:5013:2: ( ruleXSetLiteral )
-                    // InternalEntityGrammar.g:5014:3: ruleXSetLiteral
+                    // InternalEntityGrammar.g:5055:2: ( ruleXSetLiteral )
+                    // InternalEntityGrammar.g:5056:3: ruleXSetLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
@@ -18726,10 +18931,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5019:2: ( ruleXListLiteral )
+                    // InternalEntityGrammar.g:5061:2: ( ruleXListLiteral )
                     {
-                    // InternalEntityGrammar.g:5019:2: ( ruleXListLiteral )
-                    // InternalEntityGrammar.g:5020:3: ruleXListLiteral
+                    // InternalEntityGrammar.g:5061:2: ( ruleXListLiteral )
+                    // InternalEntityGrammar.g:5062:3: ruleXListLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
@@ -18766,27 +18971,27 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Alternatives_2"
-    // InternalEntityGrammar.g:5029:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );
+    // InternalEntityGrammar.g:5071:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );
     public final void rule__XSwitchExpression__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5033:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
-            int alt51=2;
-            alt51 = dfa51.predict(input);
-            switch (alt51) {
+            // InternalEntityGrammar.g:5075:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
+            int alt53=2;
+            alt53 = dfa53.predict(input);
+            switch (alt53) {
                 case 1 :
-                    // InternalEntityGrammar.g:5034:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:5076:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:5034:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
-                    // InternalEntityGrammar.g:5035:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalEntityGrammar.g:5076:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:5077:3: ( rule__XSwitchExpression__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
                     }
-                    // InternalEntityGrammar.g:5036:3: ( rule__XSwitchExpression__Group_2_0__0 )
-                    // InternalEntityGrammar.g:5036:4: rule__XSwitchExpression__Group_2_0__0
+                    // InternalEntityGrammar.g:5078:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalEntityGrammar.g:5078:4: rule__XSwitchExpression__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_0__0();
@@ -18806,16 +19011,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5040:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalEntityGrammar.g:5082:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:5040:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
-                    // InternalEntityGrammar.g:5041:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalEntityGrammar.g:5082:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalEntityGrammar.g:5083:3: ( rule__XSwitchExpression__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); 
                     }
-                    // InternalEntityGrammar.g:5042:3: ( rule__XSwitchExpression__Group_2_1__0 )
-                    // InternalEntityGrammar.g:5042:4: rule__XSwitchExpression__Group_2_1__0
+                    // InternalEntityGrammar.g:5084:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalEntityGrammar.g:5084:4: rule__XSwitchExpression__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_1__0();
@@ -18852,41 +19057,41 @@
 
 
     // $ANTLR start "rule__XCasePart__Alternatives_3"
-    // InternalEntityGrammar.g:5050:1: rule__XCasePart__Alternatives_3 : ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) );
+    // InternalEntityGrammar.g:5092:1: rule__XCasePart__Alternatives_3 : ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) );
     public final void rule__XCasePart__Alternatives_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5054:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
-            int alt52=2;
-            int LA52_0 = input.LA(1);
+            // InternalEntityGrammar.g:5096:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
+            int alt54=2;
+            int LA54_0 = input.LA(1);
 
-            if ( (LA52_0==141) ) {
-                alt52=1;
+            if ( (LA54_0==141) ) {
+                alt54=1;
             }
-            else if ( (LA52_0==95) ) {
-                alt52=2;
+            else if ( (LA54_0==95) ) {
+                alt54=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 52, 0, input);
+                    new NoViableAltException("", 54, 0, input);
 
                 throw nvae;
             }
-            switch (alt52) {
+            switch (alt54) {
                 case 1 :
-                    // InternalEntityGrammar.g:5055:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalEntityGrammar.g:5097:2: ( ( rule__XCasePart__Group_3_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:5055:2: ( ( rule__XCasePart__Group_3_0__0 ) )
-                    // InternalEntityGrammar.g:5056:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalEntityGrammar.g:5097:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalEntityGrammar.g:5098:3: ( rule__XCasePart__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCasePartAccess().getGroup_3_0()); 
                     }
-                    // InternalEntityGrammar.g:5057:3: ( rule__XCasePart__Group_3_0__0 )
-                    // InternalEntityGrammar.g:5057:4: rule__XCasePart__Group_3_0__0
+                    // InternalEntityGrammar.g:5099:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalEntityGrammar.g:5099:4: rule__XCasePart__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__Group_3_0__0();
@@ -18906,16 +19111,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5061:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalEntityGrammar.g:5103:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
                     {
-                    // InternalEntityGrammar.g:5061:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
-                    // InternalEntityGrammar.g:5062:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalEntityGrammar.g:5103:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalEntityGrammar.g:5104:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); 
                     }
-                    // InternalEntityGrammar.g:5063:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
-                    // InternalEntityGrammar.g:5063:4: rule__XCasePart__FallThroughAssignment_3_1
+                    // InternalEntityGrammar.g:5105:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalEntityGrammar.g:5105:4: rule__XCasePart__FallThroughAssignment_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__FallThroughAssignment_3_1();
@@ -18952,35 +19157,35 @@
 
 
     // $ANTLR start "rule__XExpressionOrVarDeclaration__Alternatives"
-    // InternalEntityGrammar.g:5071:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
+    // InternalEntityGrammar.g:5113:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
     public final void rule__XExpressionOrVarDeclaration__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5075:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
-            int alt53=2;
-            int LA53_0 = input.LA(1);
+            // InternalEntityGrammar.g:5117:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
+            int alt55=2;
+            int LA55_0 = input.LA(1);
 
-            if ( (LA53_0==16||LA53_0==61) ) {
-                alt53=1;
+            if ( (LA55_0==16||LA55_0==61) ) {
+                alt55=1;
             }
-            else if ( ((LA53_0>=RULE_ID && LA53_0<=RULE_STRING)||(LA53_0>=33 && LA53_0<=34)||LA53_0==46||LA53_0==57||(LA53_0>=62 && LA53_0<=67)||LA53_0==88||LA53_0==90||LA53_0==99||LA53_0==135||LA53_0==138||LA53_0==140||(LA53_0>=144 && LA53_0<=152)||LA53_0==154||LA53_0==179) ) {
-                alt53=2;
+            else if ( ((LA55_0>=RULE_ID && LA55_0<=RULE_STRING)||(LA55_0>=33 && LA55_0<=34)||LA55_0==46||LA55_0==57||(LA55_0>=62 && LA55_0<=67)||LA55_0==88||LA55_0==90||LA55_0==99||LA55_0==135||LA55_0==138||LA55_0==140||(LA55_0>=144 && LA55_0<=152)||LA55_0==154||LA55_0==182) ) {
+                alt55=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 53, 0, input);
+                    new NoViableAltException("", 55, 0, input);
 
                 throw nvae;
             }
-            switch (alt53) {
+            switch (alt55) {
                 case 1 :
-                    // InternalEntityGrammar.g:5076:2: ( ruleXVariableDeclaration )
+                    // InternalEntityGrammar.g:5118:2: ( ruleXVariableDeclaration )
                     {
-                    // InternalEntityGrammar.g:5076:2: ( ruleXVariableDeclaration )
-                    // InternalEntityGrammar.g:5077:3: ruleXVariableDeclaration
+                    // InternalEntityGrammar.g:5118:2: ( ruleXVariableDeclaration )
+                    // InternalEntityGrammar.g:5119:3: ruleXVariableDeclaration
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); 
@@ -19000,10 +19205,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5082:2: ( ruleXExpression )
+                    // InternalEntityGrammar.g:5124:2: ( ruleXExpression )
                     {
-                    // InternalEntityGrammar.g:5082:2: ( ruleXExpression )
-                    // InternalEntityGrammar.g:5083:3: ruleXExpression
+                    // InternalEntityGrammar.g:5124:2: ( ruleXExpression )
+                    // InternalEntityGrammar.g:5125:3: ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); 
@@ -19040,41 +19245,41 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Alternatives_1"
-    // InternalEntityGrammar.g:5092:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
+    // InternalEntityGrammar.g:5134:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
     public final void rule__XVariableDeclaration__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5096:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
-            int alt54=2;
-            int LA54_0 = input.LA(1);
+            // InternalEntityGrammar.g:5138:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
+            int alt56=2;
+            int LA56_0 = input.LA(1);
 
-            if ( (LA54_0==16) ) {
-                alt54=1;
+            if ( (LA56_0==16) ) {
+                alt56=1;
             }
-            else if ( (LA54_0==61) ) {
-                alt54=2;
+            else if ( (LA56_0==61) ) {
+                alt56=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 54, 0, input);
+                    new NoViableAltException("", 56, 0, input);
 
                 throw nvae;
             }
-            switch (alt54) {
+            switch (alt56) {
                 case 1 :
-                    // InternalEntityGrammar.g:5097:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalEntityGrammar.g:5139:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
                     {
-                    // InternalEntityGrammar.g:5097:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
-                    // InternalEntityGrammar.g:5098:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalEntityGrammar.g:5139:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalEntityGrammar.g:5140:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); 
                     }
-                    // InternalEntityGrammar.g:5099:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
-                    // InternalEntityGrammar.g:5099:4: rule__XVariableDeclaration__WriteableAssignment_1_0
+                    // InternalEntityGrammar.g:5141:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalEntityGrammar.g:5141:4: rule__XVariableDeclaration__WriteableAssignment_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__WriteableAssignment_1_0();
@@ -19094,10 +19299,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5103:2: ( 'val' )
+                    // InternalEntityGrammar.g:5145:2: ( 'val' )
                     {
-                    // InternalEntityGrammar.g:5103:2: ( 'val' )
-                    // InternalEntityGrammar.g:5104:3: 'val'
+                    // InternalEntityGrammar.g:5145:2: ( 'val' )
+                    // InternalEntityGrammar.g:5146:3: 'val'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); 
@@ -19130,55 +19335,55 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Alternatives_2"
-    // InternalEntityGrammar.g:5113:1: rule__XVariableDeclaration__Alternatives_2 : ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) );
+    // InternalEntityGrammar.g:5155:1: rule__XVariableDeclaration__Alternatives_2 : ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) );
     public final void rule__XVariableDeclaration__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5117:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
-            int alt55=2;
-            int LA55_0 = input.LA(1);
+            // InternalEntityGrammar.g:5159:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
+            int alt57=2;
+            int LA57_0 = input.LA(1);
 
-            if ( (LA55_0==RULE_ID) ) {
-                int LA55_1 = input.LA(2);
+            if ( (LA57_0==RULE_ID) ) {
+                int LA57_1 = input.LA(2);
 
-                if ( (synpred144_InternalEntityGrammar()) ) {
-                    alt55=1;
+                if ( (synpred146_InternalEntityGrammar()) ) {
+                    alt57=1;
                 }
                 else if ( (true) ) {
-                    alt55=2;
+                    alt57=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 55, 1, input);
+                        new NoViableAltException("", 57, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA55_0==50||LA55_0==90) ) {
-                alt55=1;
+            else if ( (LA57_0==50||LA57_0==90) ) {
+                alt57=1;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 55, 0, input);
+                    new NoViableAltException("", 57, 0, input);
 
                 throw nvae;
             }
-            switch (alt55) {
+            switch (alt57) {
                 case 1 :
-                    // InternalEntityGrammar.g:5118:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:5160:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:5118:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
-                    // InternalEntityGrammar.g:5119:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalEntityGrammar.g:5160:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:5161:3: ( rule__XVariableDeclaration__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
                     }
-                    // InternalEntityGrammar.g:5120:3: ( rule__XVariableDeclaration__Group_2_0__0 )
-                    // InternalEntityGrammar.g:5120:4: rule__XVariableDeclaration__Group_2_0__0
+                    // InternalEntityGrammar.g:5162:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalEntityGrammar.g:5162:4: rule__XVariableDeclaration__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__Group_2_0__0();
@@ -19198,16 +19403,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5124:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalEntityGrammar.g:5166:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
                     {
-                    // InternalEntityGrammar.g:5124:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
-                    // InternalEntityGrammar.g:5125:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalEntityGrammar.g:5166:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalEntityGrammar.g:5167:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); 
                     }
-                    // InternalEntityGrammar.g:5126:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
-                    // InternalEntityGrammar.g:5126:4: rule__XVariableDeclaration__NameAssignment_2_1
+                    // InternalEntityGrammar.g:5168:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalEntityGrammar.g:5168:4: rule__XVariableDeclaration__NameAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__NameAssignment_2_1();
@@ -19244,27 +19449,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Alternatives_3_1"
-    // InternalEntityGrammar.g:5134:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );
+    // InternalEntityGrammar.g:5176:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );
     public final void rule__XFeatureCall__Alternatives_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5138:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
-            int alt56=2;
-            alt56 = dfa56.predict(input);
-            switch (alt56) {
+            // InternalEntityGrammar.g:5180:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
+            int alt58=2;
+            alt58 = dfa58.predict(input);
+            switch (alt58) {
                 case 1 :
-                    // InternalEntityGrammar.g:5139:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalEntityGrammar.g:5181:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
                     {
-                    // InternalEntityGrammar.g:5139:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
-                    // InternalEntityGrammar.g:5140:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalEntityGrammar.g:5181:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalEntityGrammar.g:5182:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
                     }
-                    // InternalEntityGrammar.g:5141:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
-                    // InternalEntityGrammar.g:5141:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+                    // InternalEntityGrammar.g:5183:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalEntityGrammar.g:5183:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
@@ -19284,16 +19489,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5145:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalEntityGrammar.g:5187:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:5145:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
-                    // InternalEntityGrammar.g:5146:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalEntityGrammar.g:5187:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalEntityGrammar.g:5188:3: ( rule__XFeatureCall__Group_3_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); 
                     }
-                    // InternalEntityGrammar.g:5147:3: ( rule__XFeatureCall__Group_3_1_1__0 )
-                    // InternalEntityGrammar.g:5147:4: rule__XFeatureCall__Group_3_1_1__0
+                    // InternalEntityGrammar.g:5189:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalEntityGrammar.g:5189:4: rule__XFeatureCall__Group_3_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_3_1_1__0();
@@ -19330,54 +19535,54 @@
 
 
     // $ANTLR start "rule__FeatureCallID__Alternatives"
-    // InternalEntityGrammar.g:5155:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
+    // InternalEntityGrammar.g:5197:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
     public final void rule__FeatureCallID__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5159:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
-            int alt57=5;
+            // InternalEntityGrammar.g:5201:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
+            int alt59=5;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                alt57=1;
+                alt59=1;
                 }
                 break;
             case 62:
                 {
-                alt57=2;
+                alt59=2;
                 }
                 break;
             case 63:
                 {
-                alt57=3;
+                alt59=3;
                 }
                 break;
             case 64:
                 {
-                alt57=4;
+                alt59=4;
                 }
                 break;
             case 65:
                 {
-                alt57=5;
+                alt59=5;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 57, 0, input);
+                    new NoViableAltException("", 59, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt57) {
+            switch (alt59) {
                 case 1 :
-                    // InternalEntityGrammar.g:5160:2: ( ruleValidID )
+                    // InternalEntityGrammar.g:5202:2: ( ruleValidID )
                     {
-                    // InternalEntityGrammar.g:5160:2: ( ruleValidID )
-                    // InternalEntityGrammar.g:5161:3: ruleValidID
+                    // InternalEntityGrammar.g:5202:2: ( ruleValidID )
+                    // InternalEntityGrammar.g:5203:3: ruleValidID
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); 
@@ -19397,10 +19602,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5166:2: ( 'extends' )
+                    // InternalEntityGrammar.g:5208:2: ( 'extends' )
                     {
-                    // InternalEntityGrammar.g:5166:2: ( 'extends' )
-                    // InternalEntityGrammar.g:5167:3: 'extends'
+                    // InternalEntityGrammar.g:5208:2: ( 'extends' )
+                    // InternalEntityGrammar.g:5209:3: 'extends'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
@@ -19416,10 +19621,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:5172:2: ( 'static' )
+                    // InternalEntityGrammar.g:5214:2: ( 'static' )
                     {
-                    // InternalEntityGrammar.g:5172:2: ( 'static' )
-                    // InternalEntityGrammar.g:5173:3: 'static'
+                    // InternalEntityGrammar.g:5214:2: ( 'static' )
+                    // InternalEntityGrammar.g:5215:3: 'static'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
@@ -19435,10 +19640,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:5178:2: ( 'import' )
+                    // InternalEntityGrammar.g:5220:2: ( 'import' )
                     {
-                    // InternalEntityGrammar.g:5178:2: ( 'import' )
-                    // InternalEntityGrammar.g:5179:3: 'import'
+                    // InternalEntityGrammar.g:5220:2: ( 'import' )
+                    // InternalEntityGrammar.g:5221:3: 'import'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
@@ -19454,10 +19659,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:5184:2: ( 'extension' )
+                    // InternalEntityGrammar.g:5226:2: ( 'extension' )
                     {
-                    // InternalEntityGrammar.g:5184:2: ( 'extension' )
-                    // InternalEntityGrammar.g:5185:3: 'extension'
+                    // InternalEntityGrammar.g:5226:2: ( 'extension' )
+                    // InternalEntityGrammar.g:5227:3: 'extension'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
@@ -19490,35 +19695,35 @@
 
 
     // $ANTLR start "rule__IdOrSuper__Alternatives"
-    // InternalEntityGrammar.g:5194:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
+    // InternalEntityGrammar.g:5236:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
     public final void rule__IdOrSuper__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5198:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
-            int alt58=2;
-            int LA58_0 = input.LA(1);
+            // InternalEntityGrammar.g:5240:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
+            int alt60=2;
+            int LA60_0 = input.LA(1);
 
-            if ( (LA58_0==RULE_ID||(LA58_0>=62 && LA58_0<=65)) ) {
-                alt58=1;
+            if ( (LA60_0==RULE_ID||(LA60_0>=62 && LA60_0<=65)) ) {
+                alt60=1;
             }
-            else if ( (LA58_0==66) ) {
-                alt58=2;
+            else if ( (LA60_0==66) ) {
+                alt60=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 58, 0, input);
+                    new NoViableAltException("", 60, 0, input);
 
                 throw nvae;
             }
-            switch (alt58) {
+            switch (alt60) {
                 case 1 :
-                    // InternalEntityGrammar.g:5199:2: ( ruleFeatureCallID )
+                    // InternalEntityGrammar.g:5241:2: ( ruleFeatureCallID )
                     {
-                    // InternalEntityGrammar.g:5199:2: ( ruleFeatureCallID )
-                    // InternalEntityGrammar.g:5200:3: ruleFeatureCallID
+                    // InternalEntityGrammar.g:5241:2: ( ruleFeatureCallID )
+                    // InternalEntityGrammar.g:5242:3: ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); 
@@ -19538,10 +19743,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5205:2: ( 'super' )
+                    // InternalEntityGrammar.g:5247:2: ( 'super' )
                     {
-                    // InternalEntityGrammar.g:5205:2: ( 'super' )
-                    // InternalEntityGrammar.g:5206:3: 'super'
+                    // InternalEntityGrammar.g:5247:2: ( 'super' )
+                    // InternalEntityGrammar.g:5248:3: 'super'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
@@ -19574,27 +19779,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Alternatives_4_1"
-    // InternalEntityGrammar.g:5215:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );
+    // InternalEntityGrammar.g:5257:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );
     public final void rule__XConstructorCall__Alternatives_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5219:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
-            int alt59=2;
-            alt59 = dfa59.predict(input);
-            switch (alt59) {
+            // InternalEntityGrammar.g:5261:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
+            int alt61=2;
+            alt61 = dfa61.predict(input);
+            switch (alt61) {
                 case 1 :
-                    // InternalEntityGrammar.g:5220:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalEntityGrammar.g:5262:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
                     {
-                    // InternalEntityGrammar.g:5220:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
-                    // InternalEntityGrammar.g:5221:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalEntityGrammar.g:5262:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalEntityGrammar.g:5263:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
                     }
-                    // InternalEntityGrammar.g:5222:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
-                    // InternalEntityGrammar.g:5222:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+                    // InternalEntityGrammar.g:5264:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalEntityGrammar.g:5264:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__ArgumentsAssignment_4_1_0();
@@ -19614,16 +19819,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5226:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalEntityGrammar.g:5268:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:5226:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
-                    // InternalEntityGrammar.g:5227:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalEntityGrammar.g:5268:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalEntityGrammar.g:5269:3: ( rule__XConstructorCall__Group_4_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); 
                     }
-                    // InternalEntityGrammar.g:5228:3: ( rule__XConstructorCall__Group_4_1_1__0 )
-                    // InternalEntityGrammar.g:5228:4: rule__XConstructorCall__Group_4_1_1__0
+                    // InternalEntityGrammar.g:5270:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalEntityGrammar.g:5270:4: rule__XConstructorCall__Group_4_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_4_1_1__0();
@@ -19660,35 +19865,35 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Alternatives_1"
-    // InternalEntityGrammar.g:5236:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
+    // InternalEntityGrammar.g:5278:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
     public final void rule__XBooleanLiteral__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5240:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
-            int alt60=2;
-            int LA60_0 = input.LA(1);
+            // InternalEntityGrammar.g:5282:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
+            int alt62=2;
+            int LA62_0 = input.LA(1);
 
-            if ( (LA60_0==67) ) {
-                alt60=1;
+            if ( (LA62_0==67) ) {
+                alt62=1;
             }
-            else if ( (LA60_0==179) ) {
-                alt60=2;
+            else if ( (LA62_0==182) ) {
+                alt62=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 60, 0, input);
+                    new NoViableAltException("", 62, 0, input);
 
                 throw nvae;
             }
-            switch (alt60) {
+            switch (alt62) {
                 case 1 :
-                    // InternalEntityGrammar.g:5241:2: ( 'false' )
+                    // InternalEntityGrammar.g:5283:2: ( 'false' )
                     {
-                    // InternalEntityGrammar.g:5241:2: ( 'false' )
-                    // InternalEntityGrammar.g:5242:3: 'false'
+                    // InternalEntityGrammar.g:5283:2: ( 'false' )
+                    // InternalEntityGrammar.g:5284:3: 'false'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); 
@@ -19704,16 +19909,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5247:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalEntityGrammar.g:5289:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
                     {
-                    // InternalEntityGrammar.g:5247:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
-                    // InternalEntityGrammar.g:5248:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalEntityGrammar.g:5289:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalEntityGrammar.g:5290:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); 
                     }
-                    // InternalEntityGrammar.g:5249:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
-                    // InternalEntityGrammar.g:5249:4: rule__XBooleanLiteral__IsTrueAssignment_1_1
+                    // InternalEntityGrammar.g:5291:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalEntityGrammar.g:5291:4: rule__XBooleanLiteral__IsTrueAssignment_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBooleanLiteral__IsTrueAssignment_1_1();
@@ -19750,41 +19955,41 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Alternatives_3"
-    // InternalEntityGrammar.g:5257:1: rule__XTryCatchFinallyExpression__Alternatives_3 : ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) );
+    // InternalEntityGrammar.g:5299:1: rule__XTryCatchFinallyExpression__Alternatives_3 : ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) );
     public final void rule__XTryCatchFinallyExpression__Alternatives_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5261:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
-            int alt61=2;
-            int LA61_0 = input.LA(1);
+            // InternalEntityGrammar.g:5303:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
+            int alt63=2;
+            int LA63_0 = input.LA(1);
 
-            if ( (LA61_0==155) ) {
-                alt61=1;
+            if ( (LA63_0==155) ) {
+                alt63=1;
             }
-            else if ( (LA61_0==153) ) {
-                alt61=2;
+            else if ( (LA63_0==153) ) {
+                alt63=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 61, 0, input);
+                    new NoViableAltException("", 63, 0, input);
 
                 throw nvae;
             }
-            switch (alt61) {
+            switch (alt63) {
                 case 1 :
-                    // InternalEntityGrammar.g:5262:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalEntityGrammar.g:5304:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:5262:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
-                    // InternalEntityGrammar.g:5263:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalEntityGrammar.g:5304:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalEntityGrammar.g:5305:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); 
                     }
-                    // InternalEntityGrammar.g:5264:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
-                    // InternalEntityGrammar.g:5264:4: rule__XTryCatchFinallyExpression__Group_3_0__0
+                    // InternalEntityGrammar.g:5306:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalEntityGrammar.g:5306:4: rule__XTryCatchFinallyExpression__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_0__0();
@@ -19804,16 +20009,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5268:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalEntityGrammar.g:5310:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:5268:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
-                    // InternalEntityGrammar.g:5269:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalEntityGrammar.g:5310:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalEntityGrammar.g:5311:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); 
                     }
-                    // InternalEntityGrammar.g:5270:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
-                    // InternalEntityGrammar.g:5270:4: rule__XTryCatchFinallyExpression__Group_3_1__0
+                    // InternalEntityGrammar.g:5312:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalEntityGrammar.g:5312:4: rule__XTryCatchFinallyExpression__Group_3_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_1__0();
@@ -19850,35 +20055,35 @@
 
 
     // $ANTLR start "rule__Number__Alternatives"
-    // InternalEntityGrammar.g:5278:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
+    // InternalEntityGrammar.g:5320:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
     public final void rule__Number__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5282:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
-            int alt62=2;
-            int LA62_0 = input.LA(1);
+            // InternalEntityGrammar.g:5324:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
+            int alt64=2;
+            int LA64_0 = input.LA(1);
 
-            if ( (LA62_0==RULE_HEX) ) {
-                alt62=1;
+            if ( (LA64_0==RULE_HEX) ) {
+                alt64=1;
             }
-            else if ( ((LA62_0>=RULE_INT && LA62_0<=RULE_DECIMAL)) ) {
-                alt62=2;
+            else if ( ((LA64_0>=RULE_INT && LA64_0<=RULE_DECIMAL)) ) {
+                alt64=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 62, 0, input);
+                    new NoViableAltException("", 64, 0, input);
 
                 throw nvae;
             }
-            switch (alt62) {
+            switch (alt64) {
                 case 1 :
-                    // InternalEntityGrammar.g:5283:2: ( RULE_HEX )
+                    // InternalEntityGrammar.g:5325:2: ( RULE_HEX )
                     {
-                    // InternalEntityGrammar.g:5283:2: ( RULE_HEX )
-                    // InternalEntityGrammar.g:5284:3: RULE_HEX
+                    // InternalEntityGrammar.g:5325:2: ( RULE_HEX )
+                    // InternalEntityGrammar.g:5326:3: RULE_HEX
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
@@ -19894,16 +20099,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5289:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalEntityGrammar.g:5331:2: ( ( rule__Number__Group_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:5289:2: ( ( rule__Number__Group_1__0 ) )
-                    // InternalEntityGrammar.g:5290:3: ( rule__Number__Group_1__0 )
+                    // InternalEntityGrammar.g:5331:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalEntityGrammar.g:5332:3: ( rule__Number__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getGroup_1()); 
                     }
-                    // InternalEntityGrammar.g:5291:3: ( rule__Number__Group_1__0 )
-                    // InternalEntityGrammar.g:5291:4: rule__Number__Group_1__0
+                    // InternalEntityGrammar.g:5333:3: ( rule__Number__Group_1__0 )
+                    // InternalEntityGrammar.g:5333:4: rule__Number__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Number__Group_1__0();
@@ -19940,35 +20145,35 @@
 
 
     // $ANTLR start "rule__Number__Alternatives_1_0"
-    // InternalEntityGrammar.g:5299:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    // InternalEntityGrammar.g:5341:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
     public final void rule__Number__Alternatives_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5303:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
-            int alt63=2;
-            int LA63_0 = input.LA(1);
+            // InternalEntityGrammar.g:5345:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt65=2;
+            int LA65_0 = input.LA(1);
 
-            if ( (LA63_0==RULE_INT) ) {
-                alt63=1;
+            if ( (LA65_0==RULE_INT) ) {
+                alt65=1;
             }
-            else if ( (LA63_0==RULE_DECIMAL) ) {
-                alt63=2;
+            else if ( (LA65_0==RULE_DECIMAL) ) {
+                alt65=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 63, 0, input);
+                    new NoViableAltException("", 65, 0, input);
 
                 throw nvae;
             }
-            switch (alt63) {
+            switch (alt65) {
                 case 1 :
-                    // InternalEntityGrammar.g:5304:2: ( RULE_INT )
+                    // InternalEntityGrammar.g:5346:2: ( RULE_INT )
                     {
-                    // InternalEntityGrammar.g:5304:2: ( RULE_INT )
-                    // InternalEntityGrammar.g:5305:3: RULE_INT
+                    // InternalEntityGrammar.g:5346:2: ( RULE_INT )
+                    // InternalEntityGrammar.g:5347:3: RULE_INT
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
@@ -19984,10 +20189,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5310:2: ( RULE_DECIMAL )
+                    // InternalEntityGrammar.g:5352:2: ( RULE_DECIMAL )
                     {
-                    // InternalEntityGrammar.g:5310:2: ( RULE_DECIMAL )
-                    // InternalEntityGrammar.g:5311:3: RULE_DECIMAL
+                    // InternalEntityGrammar.g:5352:2: ( RULE_DECIMAL )
+                    // InternalEntityGrammar.g:5353:3: RULE_DECIMAL
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
@@ -20020,35 +20225,35 @@
 
 
     // $ANTLR start "rule__Number__Alternatives_1_1_1"
-    // InternalEntityGrammar.g:5320:1: rule__Number__Alternatives_1_1_1 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    // InternalEntityGrammar.g:5362:1: rule__Number__Alternatives_1_1_1 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
     public final void rule__Number__Alternatives_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5324:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
-            int alt64=2;
-            int LA64_0 = input.LA(1);
+            // InternalEntityGrammar.g:5366:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt66=2;
+            int LA66_0 = input.LA(1);
 
-            if ( (LA64_0==RULE_INT) ) {
-                alt64=1;
+            if ( (LA66_0==RULE_INT) ) {
+                alt66=1;
             }
-            else if ( (LA64_0==RULE_DECIMAL) ) {
-                alt64=2;
+            else if ( (LA66_0==RULE_DECIMAL) ) {
+                alt66=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 64, 0, input);
+                    new NoViableAltException("", 66, 0, input);
 
                 throw nvae;
             }
-            switch (alt64) {
+            switch (alt66) {
                 case 1 :
-                    // InternalEntityGrammar.g:5325:2: ( RULE_INT )
+                    // InternalEntityGrammar.g:5367:2: ( RULE_INT )
                     {
-                    // InternalEntityGrammar.g:5325:2: ( RULE_INT )
-                    // InternalEntityGrammar.g:5326:3: RULE_INT
+                    // InternalEntityGrammar.g:5367:2: ( RULE_INT )
+                    // InternalEntityGrammar.g:5368:3: RULE_INT
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
@@ -20064,10 +20269,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5331:2: ( RULE_DECIMAL )
+                    // InternalEntityGrammar.g:5373:2: ( RULE_DECIMAL )
                     {
-                    // InternalEntityGrammar.g:5331:2: ( RULE_DECIMAL )
-                    // InternalEntityGrammar.g:5332:3: RULE_DECIMAL
+                    // InternalEntityGrammar.g:5373:2: ( RULE_DECIMAL )
+                    // InternalEntityGrammar.g:5374:3: RULE_DECIMAL
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
@@ -20100,41 +20305,41 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Alternatives"
-    // InternalEntityGrammar.g:5341:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
+    // InternalEntityGrammar.g:5383:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
     public final void rule__JvmTypeReference__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5345:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
-            int alt65=2;
-            int LA65_0 = input.LA(1);
+            // InternalEntityGrammar.g:5387:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
+            int alt67=2;
+            int LA67_0 = input.LA(1);
 
-            if ( (LA65_0==RULE_ID) ) {
-                alt65=1;
+            if ( (LA67_0==RULE_ID) ) {
+                alt67=1;
             }
-            else if ( (LA65_0==50||LA65_0==90) ) {
-                alt65=2;
+            else if ( (LA67_0==50||LA67_0==90) ) {
+                alt67=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 65, 0, input);
+                    new NoViableAltException("", 67, 0, input);
 
                 throw nvae;
             }
-            switch (alt65) {
+            switch (alt67) {
                 case 1 :
-                    // InternalEntityGrammar.g:5346:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalEntityGrammar.g:5388:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:5346:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
-                    // InternalEntityGrammar.g:5347:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalEntityGrammar.g:5388:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalEntityGrammar.g:5389:3: ( rule__JvmTypeReference__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); 
                     }
-                    // InternalEntityGrammar.g:5348:3: ( rule__JvmTypeReference__Group_0__0 )
-                    // InternalEntityGrammar.g:5348:4: rule__JvmTypeReference__Group_0__0
+                    // InternalEntityGrammar.g:5390:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalEntityGrammar.g:5390:4: rule__JvmTypeReference__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmTypeReference__Group_0__0();
@@ -20154,10 +20359,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5352:2: ( ruleXFunctionTypeRef )
+                    // InternalEntityGrammar.g:5394:2: ( ruleXFunctionTypeRef )
                     {
-                    // InternalEntityGrammar.g:5352:2: ( ruleXFunctionTypeRef )
-                    // InternalEntityGrammar.g:5353:3: ruleXFunctionTypeRef
+                    // InternalEntityGrammar.g:5394:2: ( ruleXFunctionTypeRef )
+                    // InternalEntityGrammar.g:5395:3: ruleXFunctionTypeRef
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
@@ -20194,35 +20399,35 @@
 
 
     // $ANTLR start "rule__JvmArgumentTypeReference__Alternatives"
-    // InternalEntityGrammar.g:5362:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
+    // InternalEntityGrammar.g:5404:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
     public final void rule__JvmArgumentTypeReference__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5366:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
-            int alt66=2;
-            int LA66_0 = input.LA(1);
+            // InternalEntityGrammar.g:5408:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
+            int alt68=2;
+            int LA68_0 = input.LA(1);
 
-            if ( (LA66_0==RULE_ID||LA66_0==50||LA66_0==90) ) {
-                alt66=1;
+            if ( (LA68_0==RULE_ID||LA68_0==50||LA68_0==90) ) {
+                alt68=1;
             }
-            else if ( (LA66_0==85) ) {
-                alt66=2;
+            else if ( (LA68_0==85) ) {
+                alt68=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 66, 0, input);
+                    new NoViableAltException("", 68, 0, input);
 
                 throw nvae;
             }
-            switch (alt66) {
+            switch (alt68) {
                 case 1 :
-                    // InternalEntityGrammar.g:5367:2: ( ruleJvmTypeReference )
+                    // InternalEntityGrammar.g:5409:2: ( ruleJvmTypeReference )
                     {
-                    // InternalEntityGrammar.g:5367:2: ( ruleJvmTypeReference )
-                    // InternalEntityGrammar.g:5368:3: ruleJvmTypeReference
+                    // InternalEntityGrammar.g:5409:2: ( ruleJvmTypeReference )
+                    // InternalEntityGrammar.g:5410:3: ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
@@ -20242,10 +20447,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5373:2: ( ruleJvmWildcardTypeReference )
+                    // InternalEntityGrammar.g:5415:2: ( ruleJvmWildcardTypeReference )
                     {
-                    // InternalEntityGrammar.g:5373:2: ( ruleJvmWildcardTypeReference )
-                    // InternalEntityGrammar.g:5374:3: ruleJvmWildcardTypeReference
+                    // InternalEntityGrammar.g:5415:2: ( ruleJvmWildcardTypeReference )
+                    // InternalEntityGrammar.g:5416:3: ruleJvmWildcardTypeReference
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
@@ -20282,41 +20487,41 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Alternatives_2"
-    // InternalEntityGrammar.g:5383:1: rule__JvmWildcardTypeReference__Alternatives_2 : ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) );
+    // InternalEntityGrammar.g:5425:1: rule__JvmWildcardTypeReference__Alternatives_2 : ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) );
     public final void rule__JvmWildcardTypeReference__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5387:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
-            int alt67=2;
-            int LA67_0 = input.LA(1);
+            // InternalEntityGrammar.g:5429:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
+            int alt69=2;
+            int LA69_0 = input.LA(1);
 
-            if ( (LA67_0==62) ) {
-                alt67=1;
+            if ( (LA69_0==62) ) {
+                alt69=1;
             }
-            else if ( (LA67_0==66) ) {
-                alt67=2;
+            else if ( (LA69_0==66) ) {
+                alt69=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 67, 0, input);
+                    new NoViableAltException("", 69, 0, input);
 
                 throw nvae;
             }
-            switch (alt67) {
+            switch (alt69) {
                 case 1 :
-                    // InternalEntityGrammar.g:5388:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:5430:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:5388:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
-                    // InternalEntityGrammar.g:5389:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalEntityGrammar.g:5430:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:5431:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); 
                     }
-                    // InternalEntityGrammar.g:5390:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
-                    // InternalEntityGrammar.g:5390:4: rule__JvmWildcardTypeReference__Group_2_0__0
+                    // InternalEntityGrammar.g:5432:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalEntityGrammar.g:5432:4: rule__JvmWildcardTypeReference__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Group_2_0__0();
@@ -20336,16 +20541,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5394:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalEntityGrammar.g:5436:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:5394:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
-                    // InternalEntityGrammar.g:5395:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalEntityGrammar.g:5436:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalEntityGrammar.g:5437:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); 
                     }
-                    // InternalEntityGrammar.g:5396:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
-                    // InternalEntityGrammar.g:5396:4: rule__JvmWildcardTypeReference__Group_2_1__0
+                    // InternalEntityGrammar.g:5438:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalEntityGrammar.g:5438:4: rule__JvmWildcardTypeReference__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Group_2_1__0();
@@ -20382,55 +20587,55 @@
 
 
     // $ANTLR start "rule__DiscriminatorType__Alternatives"
-    // InternalEntityGrammar.g:5404:1: rule__DiscriminatorType__Alternatives : ( ( ( 'INHERIT' ) ) | ( ( 'STRING' ) ) | ( ( 'CHAR' ) ) | ( ( 'INT' ) ) );
+    // InternalEntityGrammar.g:5446:1: rule__DiscriminatorType__Alternatives : ( ( ( 'INHERIT' ) ) | ( ( 'STRING' ) ) | ( ( 'CHAR' ) ) | ( ( 'INT' ) ) );
     public final void rule__DiscriminatorType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5408:1: ( ( ( 'INHERIT' ) ) | ( ( 'STRING' ) ) | ( ( 'CHAR' ) ) | ( ( 'INT' ) ) )
-            int alt68=4;
+            // InternalEntityGrammar.g:5450:1: ( ( ( 'INHERIT' ) ) | ( ( 'STRING' ) ) | ( ( 'CHAR' ) ) | ( ( 'INT' ) ) )
+            int alt70=4;
             switch ( input.LA(1) ) {
             case 68:
                 {
-                alt68=1;
+                alt70=1;
                 }
                 break;
             case 69:
                 {
-                alt68=2;
+                alt70=2;
                 }
                 break;
             case 70:
                 {
-                alt68=3;
+                alt70=3;
                 }
                 break;
             case 71:
                 {
-                alt68=4;
+                alt70=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 68, 0, input);
+                    new NoViableAltException("", 70, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt68) {
+            switch (alt70) {
                 case 1 :
-                    // InternalEntityGrammar.g:5409:2: ( ( 'INHERIT' ) )
+                    // InternalEntityGrammar.g:5451:2: ( ( 'INHERIT' ) )
                     {
-                    // InternalEntityGrammar.g:5409:2: ( ( 'INHERIT' ) )
-                    // InternalEntityGrammar.g:5410:3: ( 'INHERIT' )
+                    // InternalEntityGrammar.g:5451:2: ( ( 'INHERIT' ) )
+                    // InternalEntityGrammar.g:5452:3: ( 'INHERIT' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDiscriminatorTypeAccess().getINHERITEnumLiteralDeclaration_0()); 
                     }
-                    // InternalEntityGrammar.g:5411:3: ( 'INHERIT' )
-                    // InternalEntityGrammar.g:5411:4: 'INHERIT'
+                    // InternalEntityGrammar.g:5453:3: ( 'INHERIT' )
+                    // InternalEntityGrammar.g:5453:4: 'INHERIT'
                     {
                     match(input,68,FOLLOW_2); if (state.failed) return ;
 
@@ -20446,16 +20651,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5415:2: ( ( 'STRING' ) )
+                    // InternalEntityGrammar.g:5457:2: ( ( 'STRING' ) )
                     {
-                    // InternalEntityGrammar.g:5415:2: ( ( 'STRING' ) )
-                    // InternalEntityGrammar.g:5416:3: ( 'STRING' )
+                    // InternalEntityGrammar.g:5457:2: ( ( 'STRING' ) )
+                    // InternalEntityGrammar.g:5458:3: ( 'STRING' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDiscriminatorTypeAccess().getSTRINGEnumLiteralDeclaration_1()); 
                     }
-                    // InternalEntityGrammar.g:5417:3: ( 'STRING' )
-                    // InternalEntityGrammar.g:5417:4: 'STRING'
+                    // InternalEntityGrammar.g:5459:3: ( 'STRING' )
+                    // InternalEntityGrammar.g:5459:4: 'STRING'
                     {
                     match(input,69,FOLLOW_2); if (state.failed) return ;
 
@@ -20471,16 +20676,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:5421:2: ( ( 'CHAR' ) )
+                    // InternalEntityGrammar.g:5463:2: ( ( 'CHAR' ) )
                     {
-                    // InternalEntityGrammar.g:5421:2: ( ( 'CHAR' ) )
-                    // InternalEntityGrammar.g:5422:3: ( 'CHAR' )
+                    // InternalEntityGrammar.g:5463:2: ( ( 'CHAR' ) )
+                    // InternalEntityGrammar.g:5464:3: ( 'CHAR' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDiscriminatorTypeAccess().getCHAREnumLiteralDeclaration_2()); 
                     }
-                    // InternalEntityGrammar.g:5423:3: ( 'CHAR' )
-                    // InternalEntityGrammar.g:5423:4: 'CHAR'
+                    // InternalEntityGrammar.g:5465:3: ( 'CHAR' )
+                    // InternalEntityGrammar.g:5465:4: 'CHAR'
                     {
                     match(input,70,FOLLOW_2); if (state.failed) return ;
 
@@ -20496,16 +20701,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:5427:2: ( ( 'INT' ) )
+                    // InternalEntityGrammar.g:5469:2: ( ( 'INT' ) )
                     {
-                    // InternalEntityGrammar.g:5427:2: ( ( 'INT' ) )
-                    // InternalEntityGrammar.g:5428:3: ( 'INT' )
+                    // InternalEntityGrammar.g:5469:2: ( ( 'INT' ) )
+                    // InternalEntityGrammar.g:5470:3: ( 'INT' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDiscriminatorTypeAccess().getINTEGEREnumLiteralDeclaration_3()); 
                     }
-                    // InternalEntityGrammar.g:5429:3: ( 'INT' )
-                    // InternalEntityGrammar.g:5429:4: 'INT'
+                    // InternalEntityGrammar.g:5471:3: ( 'INT' )
+                    // InternalEntityGrammar.g:5471:4: 'INT'
                     {
                     match(input,71,FOLLOW_2); if (state.failed) return ;
 
@@ -20538,41 +20743,41 @@
 
 
     // $ANTLR start "rule__LHistorizedDateType__Alternatives"
-    // InternalEntityGrammar.g:5437:1: rule__LHistorizedDateType__Alternatives : ( ( ( 'DATE' ) ) | ( ( 'TIMESTAMP' ) ) );
+    // InternalEntityGrammar.g:5479:1: rule__LHistorizedDateType__Alternatives : ( ( ( 'DATE' ) ) | ( ( 'TIMESTAMP' ) ) );
     public final void rule__LHistorizedDateType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5441:1: ( ( ( 'DATE' ) ) | ( ( 'TIMESTAMP' ) ) )
-            int alt69=2;
-            int LA69_0 = input.LA(1);
+            // InternalEntityGrammar.g:5483:1: ( ( ( 'DATE' ) ) | ( ( 'TIMESTAMP' ) ) )
+            int alt71=2;
+            int LA71_0 = input.LA(1);
 
-            if ( (LA69_0==72) ) {
-                alt69=1;
+            if ( (LA71_0==72) ) {
+                alt71=1;
             }
-            else if ( (LA69_0==73) ) {
-                alt69=2;
+            else if ( (LA71_0==73) ) {
+                alt71=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 69, 0, input);
+                    new NoViableAltException("", 71, 0, input);
 
                 throw nvae;
             }
-            switch (alt69) {
+            switch (alt71) {
                 case 1 :
-                    // InternalEntityGrammar.g:5442:2: ( ( 'DATE' ) )
+                    // InternalEntityGrammar.g:5484:2: ( ( 'DATE' ) )
                     {
-                    // InternalEntityGrammar.g:5442:2: ( ( 'DATE' ) )
-                    // InternalEntityGrammar.g:5443:3: ( 'DATE' )
+                    // InternalEntityGrammar.g:5484:2: ( ( 'DATE' ) )
+                    // InternalEntityGrammar.g:5485:3: ( 'DATE' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLHistorizedDateTypeAccess().getDATEEnumLiteralDeclaration_0()); 
                     }
-                    // InternalEntityGrammar.g:5444:3: ( 'DATE' )
-                    // InternalEntityGrammar.g:5444:4: 'DATE'
+                    // InternalEntityGrammar.g:5486:3: ( 'DATE' )
+                    // InternalEntityGrammar.g:5486:4: 'DATE'
                     {
                     match(input,72,FOLLOW_2); if (state.failed) return ;
 
@@ -20588,16 +20793,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5448:2: ( ( 'TIMESTAMP' ) )
+                    // InternalEntityGrammar.g:5490:2: ( ( 'TIMESTAMP' ) )
                     {
-                    // InternalEntityGrammar.g:5448:2: ( ( 'TIMESTAMP' ) )
-                    // InternalEntityGrammar.g:5449:3: ( 'TIMESTAMP' )
+                    // InternalEntityGrammar.g:5490:2: ( ( 'TIMESTAMP' ) )
+                    // InternalEntityGrammar.g:5491:3: ( 'TIMESTAMP' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLHistorizedDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_1()); 
                     }
-                    // InternalEntityGrammar.g:5450:3: ( 'TIMESTAMP' )
-                    // InternalEntityGrammar.g:5450:4: 'TIMESTAMP'
+                    // InternalEntityGrammar.g:5492:3: ( 'TIMESTAMP' )
+                    // InternalEntityGrammar.g:5492:4: 'TIMESTAMP'
                     {
                     match(input,73,FOLLOW_2); if (state.failed) return ;
 
@@ -20630,50 +20835,50 @@
 
 
     // $ANTLR start "rule__ConstraintSeverity__Alternatives"
-    // InternalEntityGrammar.g:5458:1: rule__ConstraintSeverity__Alternatives : ( ( ( 'info' ) ) | ( ( 'warn' ) ) | ( ( 'error' ) ) );
+    // InternalEntityGrammar.g:5500:1: rule__ConstraintSeverity__Alternatives : ( ( ( 'info' ) ) | ( ( 'warn' ) ) | ( ( 'error' ) ) );
     public final void rule__ConstraintSeverity__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5462:1: ( ( ( 'info' ) ) | ( ( 'warn' ) ) | ( ( 'error' ) ) )
-            int alt70=3;
+            // InternalEntityGrammar.g:5504:1: ( ( ( 'info' ) ) | ( ( 'warn' ) ) | ( ( 'error' ) ) )
+            int alt72=3;
             switch ( input.LA(1) ) {
             case 74:
                 {
-                alt70=1;
+                alt72=1;
                 }
                 break;
             case 75:
                 {
-                alt70=2;
+                alt72=2;
                 }
                 break;
             case 76:
                 {
-                alt70=3;
+                alt72=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 70, 0, input);
+                    new NoViableAltException("", 72, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt70) {
+            switch (alt72) {
                 case 1 :
-                    // InternalEntityGrammar.g:5463:2: ( ( 'info' ) )
+                    // InternalEntityGrammar.g:5505:2: ( ( 'info' ) )
                     {
-                    // InternalEntityGrammar.g:5463:2: ( ( 'info' ) )
-                    // InternalEntityGrammar.g:5464:3: ( 'info' )
+                    // InternalEntityGrammar.g:5505:2: ( ( 'info' ) )
+                    // InternalEntityGrammar.g:5506:3: ( 'info' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getConstraintSeverityAccess().getINFOEnumLiteralDeclaration_0()); 
                     }
-                    // InternalEntityGrammar.g:5465:3: ( 'info' )
-                    // InternalEntityGrammar.g:5465:4: 'info'
+                    // InternalEntityGrammar.g:5507:3: ( 'info' )
+                    // InternalEntityGrammar.g:5507:4: 'info'
                     {
                     match(input,74,FOLLOW_2); if (state.failed) return ;
 
@@ -20689,16 +20894,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5469:2: ( ( 'warn' ) )
+                    // InternalEntityGrammar.g:5511:2: ( ( 'warn' ) )
                     {
-                    // InternalEntityGrammar.g:5469:2: ( ( 'warn' ) )
-                    // InternalEntityGrammar.g:5470:3: ( 'warn' )
+                    // InternalEntityGrammar.g:5511:2: ( ( 'warn' ) )
+                    // InternalEntityGrammar.g:5512:3: ( 'warn' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getConstraintSeverityAccess().getWARNINGEnumLiteralDeclaration_1()); 
                     }
-                    // InternalEntityGrammar.g:5471:3: ( 'warn' )
-                    // InternalEntityGrammar.g:5471:4: 'warn'
+                    // InternalEntityGrammar.g:5513:3: ( 'warn' )
+                    // InternalEntityGrammar.g:5513:4: 'warn'
                     {
                     match(input,75,FOLLOW_2); if (state.failed) return ;
 
@@ -20714,16 +20919,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:5475:2: ( ( 'error' ) )
+                    // InternalEntityGrammar.g:5517:2: ( ( 'error' ) )
                     {
-                    // InternalEntityGrammar.g:5475:2: ( ( 'error' ) )
-                    // InternalEntityGrammar.g:5476:3: ( 'error' )
+                    // InternalEntityGrammar.g:5517:2: ( ( 'error' ) )
+                    // InternalEntityGrammar.g:5518:3: ( 'error' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getConstraintSeverityAccess().getERROREnumLiteralDeclaration_2()); 
                     }
-                    // InternalEntityGrammar.g:5477:3: ( 'error' )
-                    // InternalEntityGrammar.g:5477:4: 'error'
+                    // InternalEntityGrammar.g:5519:3: ( 'error' )
+                    // InternalEntityGrammar.g:5519:4: 'error'
                     {
                     match(input,76,FOLLOW_2); if (state.failed) return ;
 
@@ -20756,50 +20961,50 @@
 
 
     // $ANTLR start "rule__DateType__Alternatives"
-    // InternalEntityGrammar.g:5485:1: rule__DateType__Alternatives : ( ( ( 'date' ) ) | ( ( 'time' ) ) | ( ( 'timestamp' ) ) );
+    // InternalEntityGrammar.g:5527:1: rule__DateType__Alternatives : ( ( ( 'date' ) ) | ( ( 'time' ) ) | ( ( 'timestamp' ) ) );
     public final void rule__DateType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5489:1: ( ( ( 'date' ) ) | ( ( 'time' ) ) | ( ( 'timestamp' ) ) )
-            int alt71=3;
+            // InternalEntityGrammar.g:5531:1: ( ( ( 'date' ) ) | ( ( 'time' ) ) | ( ( 'timestamp' ) ) )
+            int alt73=3;
             switch ( input.LA(1) ) {
             case 29:
                 {
-                alt71=1;
+                alt73=1;
                 }
                 break;
             case 77:
                 {
-                alt71=2;
+                alt73=2;
                 }
                 break;
             case 78:
                 {
-                alt71=3;
+                alt73=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 71, 0, input);
+                    new NoViableAltException("", 73, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt71) {
+            switch (alt73) {
                 case 1 :
-                    // InternalEntityGrammar.g:5490:2: ( ( 'date' ) )
+                    // InternalEntityGrammar.g:5532:2: ( ( 'date' ) )
                     {
-                    // InternalEntityGrammar.g:5490:2: ( ( 'date' ) )
-                    // InternalEntityGrammar.g:5491:3: ( 'date' )
+                    // InternalEntityGrammar.g:5532:2: ( ( 'date' ) )
+                    // InternalEntityGrammar.g:5533:3: ( 'date' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDateTypeAccess().getDATEEnumLiteralDeclaration_0()); 
                     }
-                    // InternalEntityGrammar.g:5492:3: ( 'date' )
-                    // InternalEntityGrammar.g:5492:4: 'date'
+                    // InternalEntityGrammar.g:5534:3: ( 'date' )
+                    // InternalEntityGrammar.g:5534:4: 'date'
                     {
                     match(input,29,FOLLOW_2); if (state.failed) return ;
 
@@ -20815,16 +21020,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5496:2: ( ( 'time' ) )
+                    // InternalEntityGrammar.g:5538:2: ( ( 'time' ) )
                     {
-                    // InternalEntityGrammar.g:5496:2: ( ( 'time' ) )
-                    // InternalEntityGrammar.g:5497:3: ( 'time' )
+                    // InternalEntityGrammar.g:5538:2: ( ( 'time' ) )
+                    // InternalEntityGrammar.g:5539:3: ( 'time' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDateTypeAccess().getTIMEEnumLiteralDeclaration_1()); 
                     }
-                    // InternalEntityGrammar.g:5498:3: ( 'time' )
-                    // InternalEntityGrammar.g:5498:4: 'time'
+                    // InternalEntityGrammar.g:5540:3: ( 'time' )
+                    // InternalEntityGrammar.g:5540:4: 'time'
                     {
                     match(input,77,FOLLOW_2); if (state.failed) return ;
 
@@ -20840,16 +21045,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:5502:2: ( ( 'timestamp' ) )
+                    // InternalEntityGrammar.g:5544:2: ( ( 'timestamp' ) )
                     {
-                    // InternalEntityGrammar.g:5502:2: ( ( 'timestamp' ) )
-                    // InternalEntityGrammar.g:5503:3: ( 'timestamp' )
+                    // InternalEntityGrammar.g:5544:2: ( ( 'timestamp' ) )
+                    // InternalEntityGrammar.g:5545:3: ( 'timestamp' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_2()); 
                     }
-                    // InternalEntityGrammar.g:5504:3: ( 'timestamp' )
-                    // InternalEntityGrammar.g:5504:4: 'timestamp'
+                    // InternalEntityGrammar.g:5546:3: ( 'timestamp' )
+                    // InternalEntityGrammar.g:5546:4: 'timestamp'
                     {
                     match(input,78,FOLLOW_2); if (state.failed) return ;
 
@@ -20882,55 +21087,55 @@
 
 
     // $ANTLR start "rule__LVisibility__Alternatives"
-    // InternalEntityGrammar.g:5512:1: rule__LVisibility__Alternatives : ( ( ( 'package' ) ) | ( ( 'private' ) ) | ( ( 'protected' ) ) | ( ( 'public' ) ) );
+    // InternalEntityGrammar.g:5554:1: rule__LVisibility__Alternatives : ( ( ( 'package' ) ) | ( ( 'private' ) ) | ( ( 'protected' ) ) | ( ( 'public' ) ) );
     public final void rule__LVisibility__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5516:1: ( ( ( 'package' ) ) | ( ( 'private' ) ) | ( ( 'protected' ) ) | ( ( 'public' ) ) )
-            int alt72=4;
+            // InternalEntityGrammar.g:5558:1: ( ( ( 'package' ) ) | ( ( 'private' ) ) | ( ( 'protected' ) ) | ( ( 'public' ) ) )
+            int alt74=4;
             switch ( input.LA(1) ) {
             case 79:
                 {
-                alt72=1;
+                alt74=1;
                 }
                 break;
             case 80:
                 {
-                alt72=2;
+                alt74=2;
                 }
                 break;
             case 81:
                 {
-                alt72=3;
+                alt74=3;
                 }
                 break;
             case 82:
                 {
-                alt72=4;
+                alt74=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 72, 0, input);
+                    new NoViableAltException("", 74, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt72) {
+            switch (alt74) {
                 case 1 :
-                    // InternalEntityGrammar.g:5517:2: ( ( 'package' ) )
+                    // InternalEntityGrammar.g:5559:2: ( ( 'package' ) )
                     {
-                    // InternalEntityGrammar.g:5517:2: ( ( 'package' ) )
-                    // InternalEntityGrammar.g:5518:3: ( 'package' )
+                    // InternalEntityGrammar.g:5559:2: ( ( 'package' ) )
+                    // InternalEntityGrammar.g:5560:3: ( 'package' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLVisibilityAccess().getPACKAGEEnumLiteralDeclaration_0()); 
                     }
-                    // InternalEntityGrammar.g:5519:3: ( 'package' )
-                    // InternalEntityGrammar.g:5519:4: 'package'
+                    // InternalEntityGrammar.g:5561:3: ( 'package' )
+                    // InternalEntityGrammar.g:5561:4: 'package'
                     {
                     match(input,79,FOLLOW_2); if (state.failed) return ;
 
@@ -20946,16 +21151,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5523:2: ( ( 'private' ) )
+                    // InternalEntityGrammar.g:5565:2: ( ( 'private' ) )
                     {
-                    // InternalEntityGrammar.g:5523:2: ( ( 'private' ) )
-                    // InternalEntityGrammar.g:5524:3: ( 'private' )
+                    // InternalEntityGrammar.g:5565:2: ( ( 'private' ) )
+                    // InternalEntityGrammar.g:5566:3: ( 'private' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1()); 
                     }
-                    // InternalEntityGrammar.g:5525:3: ( 'private' )
-                    // InternalEntityGrammar.g:5525:4: 'private'
+                    // InternalEntityGrammar.g:5567:3: ( 'private' )
+                    // InternalEntityGrammar.g:5567:4: 'private'
                     {
                     match(input,80,FOLLOW_2); if (state.failed) return ;
 
@@ -20971,16 +21176,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:5529:2: ( ( 'protected' ) )
+                    // InternalEntityGrammar.g:5571:2: ( ( 'protected' ) )
                     {
-                    // InternalEntityGrammar.g:5529:2: ( ( 'protected' ) )
-                    // InternalEntityGrammar.g:5530:3: ( 'protected' )
+                    // InternalEntityGrammar.g:5571:2: ( ( 'protected' ) )
+                    // InternalEntityGrammar.g:5572:3: ( 'protected' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2()); 
                     }
-                    // InternalEntityGrammar.g:5531:3: ( 'protected' )
-                    // InternalEntityGrammar.g:5531:4: 'protected'
+                    // InternalEntityGrammar.g:5573:3: ( 'protected' )
+                    // InternalEntityGrammar.g:5573:4: 'protected'
                     {
                     match(input,81,FOLLOW_2); if (state.failed) return ;
 
@@ -20996,16 +21201,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:5535:2: ( ( 'public' ) )
+                    // InternalEntityGrammar.g:5577:2: ( ( 'public' ) )
                     {
-                    // InternalEntityGrammar.g:5535:2: ( ( 'public' ) )
-                    // InternalEntityGrammar.g:5536:3: ( 'public' )
+                    // InternalEntityGrammar.g:5577:2: ( ( 'public' ) )
+                    // InternalEntityGrammar.g:5578:3: ( 'public' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLVisibilityAccess().getPUBLICEnumLiteralDeclaration_3()); 
                     }
-                    // InternalEntityGrammar.g:5537:3: ( 'public' )
-                    // InternalEntityGrammar.g:5537:4: 'public'
+                    // InternalEntityGrammar.g:5579:3: ( 'public' )
+                    // InternalEntityGrammar.g:5579:4: 'public'
                     {
                     match(input,82,FOLLOW_2); if (state.failed) return ;
 
@@ -21038,65 +21243,65 @@
 
 
     // $ANTLR start "rule__LComparatorType__Alternatives"
-    // InternalEntityGrammar.g:5545:1: rule__LComparatorType__Alternatives : ( ( ( '==' ) ) | ( ( '>' ) ) | ( ( '<' ) ) | ( ( '>=' ) ) | ( ( '<=' ) ) | ( ( '<>' ) ) );
+    // InternalEntityGrammar.g:5587:1: rule__LComparatorType__Alternatives : ( ( ( '==' ) ) | ( ( '>' ) ) | ( ( '<' ) ) | ( ( '>=' ) ) | ( ( '<=' ) ) | ( ( '<>' ) ) );
     public final void rule__LComparatorType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5549:1: ( ( ( '==' ) ) | ( ( '>' ) ) | ( ( '<' ) ) | ( ( '>=' ) ) | ( ( '<=' ) ) | ( ( '<>' ) ) )
-            int alt73=6;
+            // InternalEntityGrammar.g:5591:1: ( ( ( '==' ) ) | ( ( '>' ) ) | ( ( '<' ) ) | ( ( '>=' ) ) | ( ( '<=' ) ) | ( ( '<>' ) ) )
+            int alt75=6;
             switch ( input.LA(1) ) {
             case 40:
                 {
-                alt73=1;
+                alt75=1;
                 }
                 break;
             case 45:
                 {
-                alt73=2;
+                alt75=2;
                 }
                 break;
             case 46:
                 {
-                alt73=3;
+                alt75=3;
                 }
                 break;
             case 44:
                 {
-                alt73=4;
+                alt75=4;
                 }
                 break;
             case 83:
                 {
-                alt73=5;
+                alt75=5;
                 }
                 break;
             case 51:
                 {
-                alt73=6;
+                alt75=6;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 73, 0, input);
+                    new NoViableAltException("", 75, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt73) {
+            switch (alt75) {
                 case 1 :
-                    // InternalEntityGrammar.g:5550:2: ( ( '==' ) )
+                    // InternalEntityGrammar.g:5592:2: ( ( '==' ) )
                     {
-                    // InternalEntityGrammar.g:5550:2: ( ( '==' ) )
-                    // InternalEntityGrammar.g:5551:3: ( '==' )
+                    // InternalEntityGrammar.g:5592:2: ( ( '==' ) )
+                    // InternalEntityGrammar.g:5593:3: ( '==' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLComparatorTypeAccess().getEQUALSEnumLiteralDeclaration_0()); 
                     }
-                    // InternalEntityGrammar.g:5552:3: ( '==' )
-                    // InternalEntityGrammar.g:5552:4: '=='
+                    // InternalEntityGrammar.g:5594:3: ( '==' )
+                    // InternalEntityGrammar.g:5594:4: '=='
                     {
                     match(input,40,FOLLOW_2); if (state.failed) return ;
 
@@ -21112,16 +21317,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5556:2: ( ( '>' ) )
+                    // InternalEntityGrammar.g:5598:2: ( ( '>' ) )
                     {
-                    // InternalEntityGrammar.g:5556:2: ( ( '>' ) )
-                    // InternalEntityGrammar.g:5557:3: ( '>' )
+                    // InternalEntityGrammar.g:5598:2: ( ( '>' ) )
+                    // InternalEntityGrammar.g:5599:3: ( '>' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLComparatorTypeAccess().getGREATEREnumLiteralDeclaration_1()); 
                     }
-                    // InternalEntityGrammar.g:5558:3: ( '>' )
-                    // InternalEntityGrammar.g:5558:4: '>'
+                    // InternalEntityGrammar.g:5600:3: ( '>' )
+                    // InternalEntityGrammar.g:5600:4: '>'
                     {
                     match(input,45,FOLLOW_2); if (state.failed) return ;
 
@@ -21137,16 +21342,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:5562:2: ( ( '<' ) )
+                    // InternalEntityGrammar.g:5604:2: ( ( '<' ) )
                     {
-                    // InternalEntityGrammar.g:5562:2: ( ( '<' ) )
-                    // InternalEntityGrammar.g:5563:3: ( '<' )
+                    // InternalEntityGrammar.g:5604:2: ( ( '<' ) )
+                    // InternalEntityGrammar.g:5605:3: ( '<' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLComparatorTypeAccess().getLOWEREnumLiteralDeclaration_2()); 
                     }
-                    // InternalEntityGrammar.g:5564:3: ( '<' )
-                    // InternalEntityGrammar.g:5564:4: '<'
+                    // InternalEntityGrammar.g:5606:3: ( '<' )
+                    // InternalEntityGrammar.g:5606:4: '<'
                     {
                     match(input,46,FOLLOW_2); if (state.failed) return ;
 
@@ -21162,16 +21367,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:5568:2: ( ( '>=' ) )
+                    // InternalEntityGrammar.g:5610:2: ( ( '>=' ) )
                     {
-                    // InternalEntityGrammar.g:5568:2: ( ( '>=' ) )
-                    // InternalEntityGrammar.g:5569:3: ( '>=' )
+                    // InternalEntityGrammar.g:5610:2: ( ( '>=' ) )
+                    // InternalEntityGrammar.g:5611:3: ( '>=' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLComparatorTypeAccess().getGREATER_EQEnumLiteralDeclaration_3()); 
                     }
-                    // InternalEntityGrammar.g:5570:3: ( '>=' )
-                    // InternalEntityGrammar.g:5570:4: '>='
+                    // InternalEntityGrammar.g:5612:3: ( '>=' )
+                    // InternalEntityGrammar.g:5612:4: '>='
                     {
                     match(input,44,FOLLOW_2); if (state.failed) return ;
 
@@ -21187,16 +21392,16 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:5574:2: ( ( '<=' ) )
+                    // InternalEntityGrammar.g:5616:2: ( ( '<=' ) )
                     {
-                    // InternalEntityGrammar.g:5574:2: ( ( '<=' ) )
-                    // InternalEntityGrammar.g:5575:3: ( '<=' )
+                    // InternalEntityGrammar.g:5616:2: ( ( '<=' ) )
+                    // InternalEntityGrammar.g:5617:3: ( '<=' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLComparatorTypeAccess().getLOWER_EQEnumLiteralDeclaration_4()); 
                     }
-                    // InternalEntityGrammar.g:5576:3: ( '<=' )
-                    // InternalEntityGrammar.g:5576:4: '<='
+                    // InternalEntityGrammar.g:5618:3: ( '<=' )
+                    // InternalEntityGrammar.g:5618:4: '<='
                     {
                     match(input,83,FOLLOW_2); if (state.failed) return ;
 
@@ -21212,16 +21417,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:5580:2: ( ( '<>' ) )
+                    // InternalEntityGrammar.g:5622:2: ( ( '<>' ) )
                     {
-                    // InternalEntityGrammar.g:5580:2: ( ( '<>' ) )
-                    // InternalEntityGrammar.g:5581:3: ( '<>' )
+                    // InternalEntityGrammar.g:5622:2: ( ( '<>' ) )
+                    // InternalEntityGrammar.g:5623:3: ( '<>' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLComparatorTypeAccess().getNOT_EQEnumLiteralDeclaration_5()); 
                     }
-                    // InternalEntityGrammar.g:5582:3: ( '<>' )
-                    // InternalEntityGrammar.g:5582:4: '<>'
+                    // InternalEntityGrammar.g:5624:3: ( '<>' )
+                    // InternalEntityGrammar.g:5624:4: '<>'
                     {
                     match(input,51,FOLLOW_2); if (state.failed) return ;
 
@@ -21254,60 +21459,60 @@
 
 
     // $ANTLR start "rule__LowerBound__Alternatives"
-    // InternalEntityGrammar.g:5590:1: rule__LowerBound__Alternatives : ( ( ( '*' ) ) | ( ( '0' ) ) | ( ( '?' ) ) | ( ( '+' ) ) | ( ( '1' ) ) );
+    // InternalEntityGrammar.g:5632:1: rule__LowerBound__Alternatives : ( ( ( '*' ) ) | ( ( '0' ) ) | ( ( '?' ) ) | ( ( '+' ) ) | ( ( '1' ) ) );
     public final void rule__LowerBound__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5594:1: ( ( ( '*' ) ) | ( ( '0' ) ) | ( ( '?' ) ) | ( ( '+' ) ) | ( ( '1' ) ) )
-            int alt74=5;
+            // InternalEntityGrammar.g:5636:1: ( ( ( '*' ) ) | ( ( '0' ) ) | ( ( '?' ) ) | ( ( '+' ) ) | ( ( '1' ) ) )
+            int alt76=5;
             switch ( input.LA(1) ) {
             case 53:
                 {
-                alt74=1;
+                alt76=1;
                 }
                 break;
             case 84:
                 {
-                alt74=2;
+                alt76=2;
                 }
                 break;
             case 85:
                 {
-                alt74=3;
+                alt76=3;
                 }
                 break;
             case 33:
                 {
-                alt74=4;
+                alt76=4;
                 }
                 break;
             case 86:
                 {
-                alt74=5;
+                alt76=5;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 74, 0, input);
+                    new NoViableAltException("", 76, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt74) {
+            switch (alt76) {
                 case 1 :
-                    // InternalEntityGrammar.g:5595:2: ( ( '*' ) )
+                    // InternalEntityGrammar.g:5637:2: ( ( '*' ) )
                     {
-                    // InternalEntityGrammar.g:5595:2: ( ( '*' ) )
-                    // InternalEntityGrammar.g:5596:3: ( '*' )
+                    // InternalEntityGrammar.g:5637:2: ( ( '*' ) )
+                    // InternalEntityGrammar.g:5638:3: ( '*' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLowerBoundAccess().getMANYEnumLiteralDeclaration_0()); 
                     }
-                    // InternalEntityGrammar.g:5597:3: ( '*' )
-                    // InternalEntityGrammar.g:5597:4: '*'
+                    // InternalEntityGrammar.g:5639:3: ( '*' )
+                    // InternalEntityGrammar.g:5639:4: '*'
                     {
                     match(input,53,FOLLOW_2); if (state.failed) return ;
 
@@ -21323,16 +21528,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5601:2: ( ( '0' ) )
+                    // InternalEntityGrammar.g:5643:2: ( ( '0' ) )
                     {
-                    // InternalEntityGrammar.g:5601:2: ( ( '0' ) )
-                    // InternalEntityGrammar.g:5602:3: ( '0' )
+                    // InternalEntityGrammar.g:5643:2: ( ( '0' ) )
+                    // InternalEntityGrammar.g:5644:3: ( '0' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLowerBoundAccess().getZEROEnumLiteralDeclaration_1()); 
                     }
-                    // InternalEntityGrammar.g:5603:3: ( '0' )
-                    // InternalEntityGrammar.g:5603:4: '0'
+                    // InternalEntityGrammar.g:5645:3: ( '0' )
+                    // InternalEntityGrammar.g:5645:4: '0'
                     {
                     match(input,84,FOLLOW_2); if (state.failed) return ;
 
@@ -21348,16 +21553,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:5607:2: ( ( '?' ) )
+                    // InternalEntityGrammar.g:5649:2: ( ( '?' ) )
                     {
-                    // InternalEntityGrammar.g:5607:2: ( ( '?' ) )
-                    // InternalEntityGrammar.g:5608:3: ( '?' )
+                    // InternalEntityGrammar.g:5649:2: ( ( '?' ) )
+                    // InternalEntityGrammar.g:5650:3: ( '?' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLowerBoundAccess().getOPTIONALEnumLiteralDeclaration_2()); 
                     }
-                    // InternalEntityGrammar.g:5609:3: ( '?' )
-                    // InternalEntityGrammar.g:5609:4: '?'
+                    // InternalEntityGrammar.g:5651:3: ( '?' )
+                    // InternalEntityGrammar.g:5651:4: '?'
                     {
                     match(input,85,FOLLOW_2); if (state.failed) return ;
 
@@ -21373,16 +21578,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:5613:2: ( ( '+' ) )
+                    // InternalEntityGrammar.g:5655:2: ( ( '+' ) )
                     {
-                    // InternalEntityGrammar.g:5613:2: ( ( '+' ) )
-                    // InternalEntityGrammar.g:5614:3: ( '+' )
+                    // InternalEntityGrammar.g:5655:2: ( ( '+' ) )
+                    // InternalEntityGrammar.g:5656:3: ( '+' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLowerBoundAccess().getATLEASTONEEnumLiteralDeclaration_3()); 
                     }
-                    // InternalEntityGrammar.g:5615:3: ( '+' )
-                    // InternalEntityGrammar.g:5615:4: '+'
+                    // InternalEntityGrammar.g:5657:3: ( '+' )
+                    // InternalEntityGrammar.g:5657:4: '+'
                     {
                     match(input,33,FOLLOW_2); if (state.failed) return ;
 
@@ -21398,16 +21603,16 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:5619:2: ( ( '1' ) )
+                    // InternalEntityGrammar.g:5661:2: ( ( '1' ) )
                     {
-                    // InternalEntityGrammar.g:5619:2: ( ( '1' ) )
-                    // InternalEntityGrammar.g:5620:3: ( '1' )
+                    // InternalEntityGrammar.g:5661:2: ( ( '1' ) )
+                    // InternalEntityGrammar.g:5662:3: ( '1' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLowerBoundAccess().getONEEnumLiteralDeclaration_4()); 
                     }
-                    // InternalEntityGrammar.g:5621:3: ( '1' )
-                    // InternalEntityGrammar.g:5621:4: '1'
+                    // InternalEntityGrammar.g:5663:3: ( '1' )
+                    // InternalEntityGrammar.g:5663:4: '1'
                     {
                     match(input,86,FOLLOW_2); if (state.failed) return ;
 
@@ -21440,41 +21645,41 @@
 
 
     // $ANTLR start "rule__UpperBound__Alternatives"
-    // InternalEntityGrammar.g:5629:1: rule__UpperBound__Alternatives : ( ( ( '*' ) ) | ( ( '1' ) ) );
+    // InternalEntityGrammar.g:5671:1: rule__UpperBound__Alternatives : ( ( ( '*' ) ) | ( ( '1' ) ) );
     public final void rule__UpperBound__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5633:1: ( ( ( '*' ) ) | ( ( '1' ) ) )
-            int alt75=2;
-            int LA75_0 = input.LA(1);
+            // InternalEntityGrammar.g:5675:1: ( ( ( '*' ) ) | ( ( '1' ) ) )
+            int alt77=2;
+            int LA77_0 = input.LA(1);
 
-            if ( (LA75_0==53) ) {
-                alt75=1;
+            if ( (LA77_0==53) ) {
+                alt77=1;
             }
-            else if ( (LA75_0==86) ) {
-                alt75=2;
+            else if ( (LA77_0==86) ) {
+                alt77=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 75, 0, input);
+                    new NoViableAltException("", 77, 0, input);
 
                 throw nvae;
             }
-            switch (alt75) {
+            switch (alt77) {
                 case 1 :
-                    // InternalEntityGrammar.g:5634:2: ( ( '*' ) )
+                    // InternalEntityGrammar.g:5676:2: ( ( '*' ) )
                     {
-                    // InternalEntityGrammar.g:5634:2: ( ( '*' ) )
-                    // InternalEntityGrammar.g:5635:3: ( '*' )
+                    // InternalEntityGrammar.g:5676:2: ( ( '*' ) )
+                    // InternalEntityGrammar.g:5677:3: ( '*' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getUpperBoundAccess().getMANYEnumLiteralDeclaration_0()); 
                     }
-                    // InternalEntityGrammar.g:5636:3: ( '*' )
-                    // InternalEntityGrammar.g:5636:4: '*'
+                    // InternalEntityGrammar.g:5678:3: ( '*' )
+                    // InternalEntityGrammar.g:5678:4: '*'
                     {
                     match(input,53,FOLLOW_2); if (state.failed) return ;
 
@@ -21490,16 +21695,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:5640:2: ( ( '1' ) )
+                    // InternalEntityGrammar.g:5682:2: ( ( '1' ) )
                     {
-                    // InternalEntityGrammar.g:5640:2: ( ( '1' ) )
-                    // InternalEntityGrammar.g:5641:3: ( '1' )
+                    // InternalEntityGrammar.g:5682:2: ( ( '1' ) )
+                    // InternalEntityGrammar.g:5683:3: ( '1' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getUpperBoundAccess().getONEEnumLiteralDeclaration_1()); 
                     }
-                    // InternalEntityGrammar.g:5642:3: ( '1' )
-                    // InternalEntityGrammar.g:5642:4: '1'
+                    // InternalEntityGrammar.g:5684:3: ( '1' )
+                    // InternalEntityGrammar.g:5684:4: '1'
                     {
                     match(input,86,FOLLOW_2); if (state.failed) return ;
 
@@ -21532,14 +21737,14 @@
 
 
     // $ANTLR start "rule__EntityModel__Group__0"
-    // InternalEntityGrammar.g:5650:1: rule__EntityModel__Group__0 : rule__EntityModel__Group__0__Impl rule__EntityModel__Group__1 ;
+    // InternalEntityGrammar.g:5692:1: rule__EntityModel__Group__0 : rule__EntityModel__Group__0__Impl rule__EntityModel__Group__1 ;
     public final void rule__EntityModel__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5654:1: ( rule__EntityModel__Group__0__Impl rule__EntityModel__Group__1 )
-            // InternalEntityGrammar.g:5655:2: rule__EntityModel__Group__0__Impl rule__EntityModel__Group__1
+            // InternalEntityGrammar.g:5696:1: ( rule__EntityModel__Group__0__Impl rule__EntityModel__Group__1 )
+            // InternalEntityGrammar.g:5697:2: rule__EntityModel__Group__0__Impl rule__EntityModel__Group__1
             {
             pushFollow(FOLLOW_5);
             rule__EntityModel__Group__0__Impl();
@@ -21570,31 +21775,31 @@
 
 
     // $ANTLR start "rule__EntityModel__Group__0__Impl"
-    // InternalEntityGrammar.g:5662:1: rule__EntityModel__Group__0__Impl : ( ( rule__EntityModel__ImportSectionAssignment_0 )? ) ;
+    // InternalEntityGrammar.g:5704:1: rule__EntityModel__Group__0__Impl : ( ( rule__EntityModel__ImportSectionAssignment_0 )? ) ;
     public final void rule__EntityModel__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5666:1: ( ( ( rule__EntityModel__ImportSectionAssignment_0 )? ) )
-            // InternalEntityGrammar.g:5667:1: ( ( rule__EntityModel__ImportSectionAssignment_0 )? )
+            // InternalEntityGrammar.g:5708:1: ( ( ( rule__EntityModel__ImportSectionAssignment_0 )? ) )
+            // InternalEntityGrammar.g:5709:1: ( ( rule__EntityModel__ImportSectionAssignment_0 )? )
             {
-            // InternalEntityGrammar.g:5667:1: ( ( rule__EntityModel__ImportSectionAssignment_0 )? )
-            // InternalEntityGrammar.g:5668:2: ( rule__EntityModel__ImportSectionAssignment_0 )?
+            // InternalEntityGrammar.g:5709:1: ( ( rule__EntityModel__ImportSectionAssignment_0 )? )
+            // InternalEntityGrammar.g:5710:2: ( rule__EntityModel__ImportSectionAssignment_0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityModelAccess().getImportSectionAssignment_0()); 
             }
-            // InternalEntityGrammar.g:5669:2: ( rule__EntityModel__ImportSectionAssignment_0 )?
-            int alt76=2;
-            int LA76_0 = input.LA(1);
+            // InternalEntityGrammar.g:5711:2: ( rule__EntityModel__ImportSectionAssignment_0 )?
+            int alt78=2;
+            int LA78_0 = input.LA(1);
 
-            if ( (LA76_0==64) ) {
-                alt76=1;
+            if ( (LA78_0==64) ) {
+                alt78=1;
             }
-            switch (alt76) {
+            switch (alt78) {
                 case 1 :
-                    // InternalEntityGrammar.g:5669:3: rule__EntityModel__ImportSectionAssignment_0
+                    // InternalEntityGrammar.g:5711:3: rule__EntityModel__ImportSectionAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityModel__ImportSectionAssignment_0();
@@ -21632,14 +21837,14 @@
 
 
     // $ANTLR start "rule__EntityModel__Group__1"
-    // InternalEntityGrammar.g:5677:1: rule__EntityModel__Group__1 : rule__EntityModel__Group__1__Impl ;
+    // InternalEntityGrammar.g:5719:1: rule__EntityModel__Group__1 : rule__EntityModel__Group__1__Impl ;
     public final void rule__EntityModel__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5681:1: ( rule__EntityModel__Group__1__Impl )
-            // InternalEntityGrammar.g:5682:2: rule__EntityModel__Group__1__Impl
+            // InternalEntityGrammar.g:5723:1: ( rule__EntityModel__Group__1__Impl )
+            // InternalEntityGrammar.g:5724:2: rule__EntityModel__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityModel__Group__1__Impl();
@@ -21665,35 +21870,35 @@
 
 
     // $ANTLR start "rule__EntityModel__Group__1__Impl"
-    // InternalEntityGrammar.g:5688:1: rule__EntityModel__Group__1__Impl : ( ( rule__EntityModel__PackagesAssignment_1 )* ) ;
+    // InternalEntityGrammar.g:5730:1: rule__EntityModel__Group__1__Impl : ( ( rule__EntityModel__PackagesAssignment_1 )* ) ;
     public final void rule__EntityModel__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5692:1: ( ( ( rule__EntityModel__PackagesAssignment_1 )* ) )
-            // InternalEntityGrammar.g:5693:1: ( ( rule__EntityModel__PackagesAssignment_1 )* )
+            // InternalEntityGrammar.g:5734:1: ( ( ( rule__EntityModel__PackagesAssignment_1 )* ) )
+            // InternalEntityGrammar.g:5735:1: ( ( rule__EntityModel__PackagesAssignment_1 )* )
             {
-            // InternalEntityGrammar.g:5693:1: ( ( rule__EntityModel__PackagesAssignment_1 )* )
-            // InternalEntityGrammar.g:5694:2: ( rule__EntityModel__PackagesAssignment_1 )*
+            // InternalEntityGrammar.g:5735:1: ( ( rule__EntityModel__PackagesAssignment_1 )* )
+            // InternalEntityGrammar.g:5736:2: ( rule__EntityModel__PackagesAssignment_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityModelAccess().getPackagesAssignment_1()); 
             }
-            // InternalEntityGrammar.g:5695:2: ( rule__EntityModel__PackagesAssignment_1 )*
-            loop77:
+            // InternalEntityGrammar.g:5737:2: ( rule__EntityModel__PackagesAssignment_1 )*
+            loop79:
             do {
-                int alt77=2;
-                int LA77_0 = input.LA(1);
+                int alt79=2;
+                int LA79_0 = input.LA(1);
 
-                if ( (LA77_0==79) ) {
-                    alt77=1;
+                if ( (LA79_0==79) ) {
+                    alt79=1;
                 }
 
 
-                switch (alt77) {
+                switch (alt79) {
             	case 1 :
-            	    // InternalEntityGrammar.g:5695:3: rule__EntityModel__PackagesAssignment_1
+            	    // InternalEntityGrammar.g:5737:3: rule__EntityModel__PackagesAssignment_1
             	    {
             	    pushFollow(FOLLOW_6);
             	    rule__EntityModel__PackagesAssignment_1();
@@ -21705,7 +21910,7 @@
             	    break;
 
             	default :
-            	    break loop77;
+            	    break loop79;
                 }
             } while (true);
 
@@ -21734,14 +21939,14 @@
 
 
     // $ANTLR start "rule__Class__Group__0"
-    // InternalEntityGrammar.g:5704:1: rule__Class__Group__0 : rule__Class__Group__0__Impl rule__Class__Group__1 ;
+    // InternalEntityGrammar.g:5746:1: rule__Class__Group__0 : rule__Class__Group__0__Impl rule__Class__Group__1 ;
     public final void rule__Class__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5708:1: ( rule__Class__Group__0__Impl rule__Class__Group__1 )
-            // InternalEntityGrammar.g:5709:2: rule__Class__Group__0__Impl rule__Class__Group__1
+            // InternalEntityGrammar.g:5750:1: ( rule__Class__Group__0__Impl rule__Class__Group__1 )
+            // InternalEntityGrammar.g:5751:2: rule__Class__Group__0__Impl rule__Class__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__Class__Group__0__Impl();
@@ -21772,23 +21977,23 @@
 
 
     // $ANTLR start "rule__Class__Group__0__Impl"
-    // InternalEntityGrammar.g:5716:1: rule__Class__Group__0__Impl : ( () ) ;
+    // InternalEntityGrammar.g:5758:1: rule__Class__Group__0__Impl : ( () ) ;
     public final void rule__Class__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5720:1: ( ( () ) )
-            // InternalEntityGrammar.g:5721:1: ( () )
+            // InternalEntityGrammar.g:5762:1: ( ( () ) )
+            // InternalEntityGrammar.g:5763:1: ( () )
             {
-            // InternalEntityGrammar.g:5721:1: ( () )
-            // InternalEntityGrammar.g:5722:2: ()
+            // InternalEntityGrammar.g:5763:1: ( () )
+            // InternalEntityGrammar.g:5764:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getLClassAction_0()); 
             }
-            // InternalEntityGrammar.g:5723:2: ()
-            // InternalEntityGrammar.g:5723:3: 
+            // InternalEntityGrammar.g:5765:2: ()
+            // InternalEntityGrammar.g:5765:3: 
             {
             }
 
@@ -21813,14 +22018,14 @@
 
 
     // $ANTLR start "rule__Class__Group__1"
-    // InternalEntityGrammar.g:5731:1: rule__Class__Group__1 : rule__Class__Group__1__Impl rule__Class__Group__2 ;
+    // InternalEntityGrammar.g:5773:1: rule__Class__Group__1 : rule__Class__Group__1__Impl rule__Class__Group__2 ;
     public final void rule__Class__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5735:1: ( rule__Class__Group__1__Impl rule__Class__Group__2 )
-            // InternalEntityGrammar.g:5736:2: rule__Class__Group__1__Impl rule__Class__Group__2
+            // InternalEntityGrammar.g:5777:1: ( rule__Class__Group__1__Impl rule__Class__Group__2 )
+            // InternalEntityGrammar.g:5778:2: rule__Class__Group__1__Impl rule__Class__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__Class__Group__1__Impl();
@@ -21851,35 +22056,35 @@
 
 
     // $ANTLR start "rule__Class__Group__1__Impl"
-    // InternalEntityGrammar.g:5743:1: rule__Class__Group__1__Impl : ( ( rule__Class__AnnotationsAssignment_1 )* ) ;
+    // InternalEntityGrammar.g:5785:1: rule__Class__Group__1__Impl : ( ( rule__Class__AnnotationsAssignment_1 )* ) ;
     public final void rule__Class__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5747:1: ( ( ( rule__Class__AnnotationsAssignment_1 )* ) )
-            // InternalEntityGrammar.g:5748:1: ( ( rule__Class__AnnotationsAssignment_1 )* )
+            // InternalEntityGrammar.g:5789:1: ( ( ( rule__Class__AnnotationsAssignment_1 )* ) )
+            // InternalEntityGrammar.g:5790:1: ( ( rule__Class__AnnotationsAssignment_1 )* )
             {
-            // InternalEntityGrammar.g:5748:1: ( ( rule__Class__AnnotationsAssignment_1 )* )
-            // InternalEntityGrammar.g:5749:2: ( rule__Class__AnnotationsAssignment_1 )*
+            // InternalEntityGrammar.g:5790:1: ( ( rule__Class__AnnotationsAssignment_1 )* )
+            // InternalEntityGrammar.g:5791:2: ( rule__Class__AnnotationsAssignment_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getAnnotationsAssignment_1()); 
             }
-            // InternalEntityGrammar.g:5750:2: ( rule__Class__AnnotationsAssignment_1 )*
-            loop78:
+            // InternalEntityGrammar.g:5792:2: ( rule__Class__AnnotationsAssignment_1 )*
+            loop80:
             do {
-                int alt78=2;
-                int LA78_0 = input.LA(1);
+                int alt80=2;
+                int LA80_0 = input.LA(1);
 
-                if ( (LA78_0==134) ) {
-                    alt78=1;
+                if ( (LA80_0==134) ) {
+                    alt80=1;
                 }
 
 
-                switch (alt78) {
+                switch (alt80) {
             	case 1 :
-            	    // InternalEntityGrammar.g:5750:3: rule__Class__AnnotationsAssignment_1
+            	    // InternalEntityGrammar.g:5792:3: rule__Class__AnnotationsAssignment_1
             	    {
             	    pushFollow(FOLLOW_8);
             	    rule__Class__AnnotationsAssignment_1();
@@ -21891,7 +22096,7 @@
             	    break;
 
             	default :
-            	    break loop78;
+            	    break loop80;
                 }
             } while (true);
 
@@ -21920,14 +22125,14 @@
 
 
     // $ANTLR start "rule__Class__Group__2"
-    // InternalEntityGrammar.g:5758:1: rule__Class__Group__2 : rule__Class__Group__2__Impl ;
+    // InternalEntityGrammar.g:5800:1: rule__Class__Group__2 : rule__Class__Group__2__Impl ;
     public final void rule__Class__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5762:1: ( rule__Class__Group__2__Impl )
-            // InternalEntityGrammar.g:5763:2: rule__Class__Group__2__Impl
+            // InternalEntityGrammar.g:5804:1: ( rule__Class__Group__2__Impl )
+            // InternalEntityGrammar.g:5805:2: rule__Class__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Class__Group__2__Impl();
@@ -21953,23 +22158,23 @@
 
 
     // $ANTLR start "rule__Class__Group__2__Impl"
-    // InternalEntityGrammar.g:5769:1: rule__Class__Group__2__Impl : ( ( rule__Class__Alternatives_2 ) ) ;
+    // InternalEntityGrammar.g:5811:1: rule__Class__Group__2__Impl : ( ( rule__Class__Alternatives_2 ) ) ;
     public final void rule__Class__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5773:1: ( ( ( rule__Class__Alternatives_2 ) ) )
-            // InternalEntityGrammar.g:5774:1: ( ( rule__Class__Alternatives_2 ) )
+            // InternalEntityGrammar.g:5815:1: ( ( ( rule__Class__Alternatives_2 ) ) )
+            // InternalEntityGrammar.g:5816:1: ( ( rule__Class__Alternatives_2 ) )
             {
-            // InternalEntityGrammar.g:5774:1: ( ( rule__Class__Alternatives_2 ) )
-            // InternalEntityGrammar.g:5775:2: ( rule__Class__Alternatives_2 )
+            // InternalEntityGrammar.g:5816:1: ( ( rule__Class__Alternatives_2 ) )
+            // InternalEntityGrammar.g:5817:2: ( rule__Class__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getAlternatives_2()); 
             }
-            // InternalEntityGrammar.g:5776:2: ( rule__Class__Alternatives_2 )
-            // InternalEntityGrammar.g:5776:3: rule__Class__Alternatives_2
+            // InternalEntityGrammar.g:5818:2: ( rule__Class__Alternatives_2 )
+            // InternalEntityGrammar.g:5818:3: rule__Class__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__Class__Alternatives_2();
@@ -22004,14 +22209,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__0"
-    // InternalEntityGrammar.g:5785:1: rule__Class__Group_2_0__0 : rule__Class__Group_2_0__0__Impl rule__Class__Group_2_0__1 ;
+    // InternalEntityGrammar.g:5827:1: rule__Class__Group_2_0__0 : rule__Class__Group_2_0__0__Impl rule__Class__Group_2_0__1 ;
     public final void rule__Class__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5789:1: ( rule__Class__Group_2_0__0__Impl rule__Class__Group_2_0__1 )
-            // InternalEntityGrammar.g:5790:2: rule__Class__Group_2_0__0__Impl rule__Class__Group_2_0__1
+            // InternalEntityGrammar.g:5831:1: ( rule__Class__Group_2_0__0__Impl rule__Class__Group_2_0__1 )
+            // InternalEntityGrammar.g:5832:2: rule__Class__Group_2_0__0__Impl rule__Class__Group_2_0__1
             {
             pushFollow(FOLLOW_9);
             rule__Class__Group_2_0__0__Impl();
@@ -22042,23 +22247,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__0__Impl"
-    // InternalEntityGrammar.g:5797:1: rule__Class__Group_2_0__0__Impl : ( () ) ;
+    // InternalEntityGrammar.g:5839:1: rule__Class__Group_2_0__0__Impl : ( () ) ;
     public final void rule__Class__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5801:1: ( ( () ) )
-            // InternalEntityGrammar.g:5802:1: ( () )
+            // InternalEntityGrammar.g:5843:1: ( ( () ) )
+            // InternalEntityGrammar.g:5844:1: ( () )
             {
-            // InternalEntityGrammar.g:5802:1: ( () )
-            // InternalEntityGrammar.g:5803:2: ()
+            // InternalEntityGrammar.g:5844:1: ( () )
+            // InternalEntityGrammar.g:5845:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getLEntityAnnotationInfoAction_2_0_0()); 
             }
-            // InternalEntityGrammar.g:5804:2: ()
-            // InternalEntityGrammar.g:5804:3: 
+            // InternalEntityGrammar.g:5846:2: ()
+            // InternalEntityGrammar.g:5846:3: 
             {
             }
 
@@ -22083,14 +22288,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__1"
-    // InternalEntityGrammar.g:5812:1: rule__Class__Group_2_0__1 : rule__Class__Group_2_0__1__Impl rule__Class__Group_2_0__2 ;
+    // InternalEntityGrammar.g:5854:1: rule__Class__Group_2_0__1 : rule__Class__Group_2_0__1__Impl rule__Class__Group_2_0__2 ;
     public final void rule__Class__Group_2_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5816:1: ( rule__Class__Group_2_0__1__Impl rule__Class__Group_2_0__2 )
-            // InternalEntityGrammar.g:5817:2: rule__Class__Group_2_0__1__Impl rule__Class__Group_2_0__2
+            // InternalEntityGrammar.g:5858:1: ( rule__Class__Group_2_0__1__Impl rule__Class__Group_2_0__2 )
+            // InternalEntityGrammar.g:5859:2: rule__Class__Group_2_0__1__Impl rule__Class__Group_2_0__2
             {
             pushFollow(FOLLOW_10);
             rule__Class__Group_2_0__1__Impl();
@@ -22121,23 +22326,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__1__Impl"
-    // InternalEntityGrammar.g:5824:1: rule__Class__Group_2_0__1__Impl : ( ( rule__Class__UnorderedGroup_2_0_1 ) ) ;
+    // InternalEntityGrammar.g:5866:1: rule__Class__Group_2_0__1__Impl : ( ( rule__Class__UnorderedGroup_2_0_1 ) ) ;
     public final void rule__Class__Group_2_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5828:1: ( ( ( rule__Class__UnorderedGroup_2_0_1 ) ) )
-            // InternalEntityGrammar.g:5829:1: ( ( rule__Class__UnorderedGroup_2_0_1 ) )
+            // InternalEntityGrammar.g:5870:1: ( ( ( rule__Class__UnorderedGroup_2_0_1 ) ) )
+            // InternalEntityGrammar.g:5871:1: ( ( rule__Class__UnorderedGroup_2_0_1 ) )
             {
-            // InternalEntityGrammar.g:5829:1: ( ( rule__Class__UnorderedGroup_2_0_1 ) )
-            // InternalEntityGrammar.g:5830:2: ( rule__Class__UnorderedGroup_2_0_1 )
+            // InternalEntityGrammar.g:5871:1: ( ( rule__Class__UnorderedGroup_2_0_1 ) )
+            // InternalEntityGrammar.g:5872:2: ( rule__Class__UnorderedGroup_2_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1()); 
             }
-            // InternalEntityGrammar.g:5831:2: ( rule__Class__UnorderedGroup_2_0_1 )
-            // InternalEntityGrammar.g:5831:3: rule__Class__UnorderedGroup_2_0_1
+            // InternalEntityGrammar.g:5873:2: ( rule__Class__UnorderedGroup_2_0_1 )
+            // InternalEntityGrammar.g:5873:3: rule__Class__UnorderedGroup_2_0_1
             {
             pushFollow(FOLLOW_2);
             rule__Class__UnorderedGroup_2_0_1();
@@ -22172,14 +22377,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__2"
-    // InternalEntityGrammar.g:5839:1: rule__Class__Group_2_0__2 : rule__Class__Group_2_0__2__Impl rule__Class__Group_2_0__3 ;
+    // InternalEntityGrammar.g:5881:1: rule__Class__Group_2_0__2 : rule__Class__Group_2_0__2__Impl rule__Class__Group_2_0__3 ;
     public final void rule__Class__Group_2_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5843:1: ( rule__Class__Group_2_0__2__Impl rule__Class__Group_2_0__3 )
-            // InternalEntityGrammar.g:5844:2: rule__Class__Group_2_0__2__Impl rule__Class__Group_2_0__3
+            // InternalEntityGrammar.g:5885:1: ( rule__Class__Group_2_0__2__Impl rule__Class__Group_2_0__3 )
+            // InternalEntityGrammar.g:5886:2: rule__Class__Group_2_0__2__Impl rule__Class__Group_2_0__3
             {
             pushFollow(FOLLOW_11);
             rule__Class__Group_2_0__2__Impl();
@@ -22210,17 +22415,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__2__Impl"
-    // InternalEntityGrammar.g:5851:1: rule__Class__Group_2_0__2__Impl : ( 'entity' ) ;
+    // InternalEntityGrammar.g:5893:1: rule__Class__Group_2_0__2__Impl : ( 'entity' ) ;
     public final void rule__Class__Group_2_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5855:1: ( ( 'entity' ) )
-            // InternalEntityGrammar.g:5856:1: ( 'entity' )
+            // InternalEntityGrammar.g:5897:1: ( ( 'entity' ) )
+            // InternalEntityGrammar.g:5898:1: ( 'entity' )
             {
-            // InternalEntityGrammar.g:5856:1: ( 'entity' )
-            // InternalEntityGrammar.g:5857:2: 'entity'
+            // InternalEntityGrammar.g:5898:1: ( 'entity' )
+            // InternalEntityGrammar.g:5899:2: 'entity'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getEntityKeyword_2_0_2()); 
@@ -22251,14 +22456,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__3"
-    // InternalEntityGrammar.g:5866:1: rule__Class__Group_2_0__3 : rule__Class__Group_2_0__3__Impl rule__Class__Group_2_0__4 ;
+    // InternalEntityGrammar.g:5908:1: rule__Class__Group_2_0__3 : rule__Class__Group_2_0__3__Impl rule__Class__Group_2_0__4 ;
     public final void rule__Class__Group_2_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5870:1: ( rule__Class__Group_2_0__3__Impl rule__Class__Group_2_0__4 )
-            // InternalEntityGrammar.g:5871:2: rule__Class__Group_2_0__3__Impl rule__Class__Group_2_0__4
+            // InternalEntityGrammar.g:5912:1: ( rule__Class__Group_2_0__3__Impl rule__Class__Group_2_0__4 )
+            // InternalEntityGrammar.g:5913:2: rule__Class__Group_2_0__3__Impl rule__Class__Group_2_0__4
             {
             pushFollow(FOLLOW_12);
             rule__Class__Group_2_0__3__Impl();
@@ -22289,23 +22494,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__3__Impl"
-    // InternalEntityGrammar.g:5878:1: rule__Class__Group_2_0__3__Impl : ( ( rule__Class__NameAssignment_2_0_3 ) ) ;
+    // InternalEntityGrammar.g:5920:1: rule__Class__Group_2_0__3__Impl : ( ( rule__Class__NameAssignment_2_0_3 ) ) ;
     public final void rule__Class__Group_2_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5882:1: ( ( ( rule__Class__NameAssignment_2_0_3 ) ) )
-            // InternalEntityGrammar.g:5883:1: ( ( rule__Class__NameAssignment_2_0_3 ) )
+            // InternalEntityGrammar.g:5924:1: ( ( ( rule__Class__NameAssignment_2_0_3 ) ) )
+            // InternalEntityGrammar.g:5925:1: ( ( rule__Class__NameAssignment_2_0_3 ) )
             {
-            // InternalEntityGrammar.g:5883:1: ( ( rule__Class__NameAssignment_2_0_3 ) )
-            // InternalEntityGrammar.g:5884:2: ( rule__Class__NameAssignment_2_0_3 )
+            // InternalEntityGrammar.g:5925:1: ( ( rule__Class__NameAssignment_2_0_3 ) )
+            // InternalEntityGrammar.g:5926:2: ( rule__Class__NameAssignment_2_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getNameAssignment_2_0_3()); 
             }
-            // InternalEntityGrammar.g:5885:2: ( rule__Class__NameAssignment_2_0_3 )
-            // InternalEntityGrammar.g:5885:3: rule__Class__NameAssignment_2_0_3
+            // InternalEntityGrammar.g:5927:2: ( rule__Class__NameAssignment_2_0_3 )
+            // InternalEntityGrammar.g:5927:3: rule__Class__NameAssignment_2_0_3
             {
             pushFollow(FOLLOW_2);
             rule__Class__NameAssignment_2_0_3();
@@ -22340,14 +22545,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__4"
-    // InternalEntityGrammar.g:5893:1: rule__Class__Group_2_0__4 : rule__Class__Group_2_0__4__Impl rule__Class__Group_2_0__5 ;
+    // InternalEntityGrammar.g:5935:1: rule__Class__Group_2_0__4 : rule__Class__Group_2_0__4__Impl rule__Class__Group_2_0__5 ;
     public final void rule__Class__Group_2_0__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5897:1: ( rule__Class__Group_2_0__4__Impl rule__Class__Group_2_0__5 )
-            // InternalEntityGrammar.g:5898:2: rule__Class__Group_2_0__4__Impl rule__Class__Group_2_0__5
+            // InternalEntityGrammar.g:5939:1: ( rule__Class__Group_2_0__4__Impl rule__Class__Group_2_0__5 )
+            // InternalEntityGrammar.g:5940:2: rule__Class__Group_2_0__4__Impl rule__Class__Group_2_0__5
             {
             pushFollow(FOLLOW_12);
             rule__Class__Group_2_0__4__Impl();
@@ -22378,31 +22583,31 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__4__Impl"
-    // InternalEntityGrammar.g:5905:1: rule__Class__Group_2_0__4__Impl : ( ( rule__Class__Group_2_0_4__0 )? ) ;
+    // InternalEntityGrammar.g:5947:1: rule__Class__Group_2_0__4__Impl : ( ( rule__Class__Group_2_0_4__0 )? ) ;
     public final void rule__Class__Group_2_0__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5909:1: ( ( ( rule__Class__Group_2_0_4__0 )? ) )
-            // InternalEntityGrammar.g:5910:1: ( ( rule__Class__Group_2_0_4__0 )? )
+            // InternalEntityGrammar.g:5951:1: ( ( ( rule__Class__Group_2_0_4__0 )? ) )
+            // InternalEntityGrammar.g:5952:1: ( ( rule__Class__Group_2_0_4__0 )? )
             {
-            // InternalEntityGrammar.g:5910:1: ( ( rule__Class__Group_2_0_4__0 )? )
-            // InternalEntityGrammar.g:5911:2: ( rule__Class__Group_2_0_4__0 )?
+            // InternalEntityGrammar.g:5952:1: ( ( rule__Class__Group_2_0_4__0 )? )
+            // InternalEntityGrammar.g:5953:2: ( rule__Class__Group_2_0_4__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getGroup_2_0_4()); 
             }
-            // InternalEntityGrammar.g:5912:2: ( rule__Class__Group_2_0_4__0 )?
-            int alt79=2;
-            int LA79_0 = input.LA(1);
+            // InternalEntityGrammar.g:5954:2: ( rule__Class__Group_2_0_4__0 )?
+            int alt81=2;
+            int LA81_0 = input.LA(1);
 
-            if ( (LA79_0==62) ) {
-                alt79=1;
+            if ( (LA81_0==62) ) {
+                alt81=1;
             }
-            switch (alt79) {
+            switch (alt81) {
                 case 1 :
-                    // InternalEntityGrammar.g:5912:3: rule__Class__Group_2_0_4__0
+                    // InternalEntityGrammar.g:5954:3: rule__Class__Group_2_0_4__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Class__Group_2_0_4__0();
@@ -22440,14 +22645,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__5"
-    // InternalEntityGrammar.g:5920:1: rule__Class__Group_2_0__5 : rule__Class__Group_2_0__5__Impl rule__Class__Group_2_0__6 ;
+    // InternalEntityGrammar.g:5962:1: rule__Class__Group_2_0__5 : rule__Class__Group_2_0__5__Impl rule__Class__Group_2_0__6 ;
     public final void rule__Class__Group_2_0__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5924:1: ( rule__Class__Group_2_0__5__Impl rule__Class__Group_2_0__6 )
-            // InternalEntityGrammar.g:5925:2: rule__Class__Group_2_0__5__Impl rule__Class__Group_2_0__6
+            // InternalEntityGrammar.g:5966:1: ( rule__Class__Group_2_0__5__Impl rule__Class__Group_2_0__6 )
+            // InternalEntityGrammar.g:5967:2: rule__Class__Group_2_0__5__Impl rule__Class__Group_2_0__6
             {
             pushFollow(FOLLOW_13);
             rule__Class__Group_2_0__5__Impl();
@@ -22478,17 +22683,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__5__Impl"
-    // InternalEntityGrammar.g:5932:1: rule__Class__Group_2_0__5__Impl : ( '{' ) ;
+    // InternalEntityGrammar.g:5974:1: rule__Class__Group_2_0__5__Impl : ( '{' ) ;
     public final void rule__Class__Group_2_0__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5936:1: ( ( '{' ) )
-            // InternalEntityGrammar.g:5937:1: ( '{' )
+            // InternalEntityGrammar.g:5978:1: ( ( '{' ) )
+            // InternalEntityGrammar.g:5979:1: ( '{' )
             {
-            // InternalEntityGrammar.g:5937:1: ( '{' )
-            // InternalEntityGrammar.g:5938:2: '{'
+            // InternalEntityGrammar.g:5979:1: ( '{' )
+            // InternalEntityGrammar.g:5980:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_0_5()); 
@@ -22519,14 +22724,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__6"
-    // InternalEntityGrammar.g:5947:1: rule__Class__Group_2_0__6 : rule__Class__Group_2_0__6__Impl rule__Class__Group_2_0__7 ;
+    // InternalEntityGrammar.g:5989:1: rule__Class__Group_2_0__6 : rule__Class__Group_2_0__6__Impl rule__Class__Group_2_0__7 ;
     public final void rule__Class__Group_2_0__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5951:1: ( rule__Class__Group_2_0__6__Impl rule__Class__Group_2_0__7 )
-            // InternalEntityGrammar.g:5952:2: rule__Class__Group_2_0__6__Impl rule__Class__Group_2_0__7
+            // InternalEntityGrammar.g:5993:1: ( rule__Class__Group_2_0__6__Impl rule__Class__Group_2_0__7 )
+            // InternalEntityGrammar.g:5994:2: rule__Class__Group_2_0__6__Impl rule__Class__Group_2_0__7
             {
             pushFollow(FOLLOW_14);
             rule__Class__Group_2_0__6__Impl();
@@ -22557,23 +22762,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__6__Impl"
-    // InternalEntityGrammar.g:5959:1: rule__Class__Group_2_0__6__Impl : ( ( rule__Class__PersistenceInfoAssignment_2_0_6 ) ) ;
+    // InternalEntityGrammar.g:6001:1: rule__Class__Group_2_0__6__Impl : ( ( rule__Class__PersistenceInfoAssignment_2_0_6 ) ) ;
     public final void rule__Class__Group_2_0__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5963:1: ( ( ( rule__Class__PersistenceInfoAssignment_2_0_6 ) ) )
-            // InternalEntityGrammar.g:5964:1: ( ( rule__Class__PersistenceInfoAssignment_2_0_6 ) )
+            // InternalEntityGrammar.g:6005:1: ( ( ( rule__Class__PersistenceInfoAssignment_2_0_6 ) ) )
+            // InternalEntityGrammar.g:6006:1: ( ( rule__Class__PersistenceInfoAssignment_2_0_6 ) )
             {
-            // InternalEntityGrammar.g:5964:1: ( ( rule__Class__PersistenceInfoAssignment_2_0_6 ) )
-            // InternalEntityGrammar.g:5965:2: ( rule__Class__PersistenceInfoAssignment_2_0_6 )
+            // InternalEntityGrammar.g:6006:1: ( ( rule__Class__PersistenceInfoAssignment_2_0_6 ) )
+            // InternalEntityGrammar.g:6007:2: ( rule__Class__PersistenceInfoAssignment_2_0_6 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getPersistenceInfoAssignment_2_0_6()); 
             }
-            // InternalEntityGrammar.g:5966:2: ( rule__Class__PersistenceInfoAssignment_2_0_6 )
-            // InternalEntityGrammar.g:5966:3: rule__Class__PersistenceInfoAssignment_2_0_6
+            // InternalEntityGrammar.g:6008:2: ( rule__Class__PersistenceInfoAssignment_2_0_6 )
+            // InternalEntityGrammar.g:6008:3: rule__Class__PersistenceInfoAssignment_2_0_6
             {
             pushFollow(FOLLOW_2);
             rule__Class__PersistenceInfoAssignment_2_0_6();
@@ -22608,14 +22813,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__7"
-    // InternalEntityGrammar.g:5974:1: rule__Class__Group_2_0__7 : rule__Class__Group_2_0__7__Impl rule__Class__Group_2_0__8 ;
+    // InternalEntityGrammar.g:6016:1: rule__Class__Group_2_0__7 : rule__Class__Group_2_0__7__Impl rule__Class__Group_2_0__8 ;
     public final void rule__Class__Group_2_0__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5978:1: ( rule__Class__Group_2_0__7__Impl rule__Class__Group_2_0__8 )
-            // InternalEntityGrammar.g:5979:2: rule__Class__Group_2_0__7__Impl rule__Class__Group_2_0__8
+            // InternalEntityGrammar.g:6020:1: ( rule__Class__Group_2_0__7__Impl rule__Class__Group_2_0__8 )
+            // InternalEntityGrammar.g:6021:2: rule__Class__Group_2_0__7__Impl rule__Class__Group_2_0__8
             {
             pushFollow(FOLLOW_14);
             rule__Class__Group_2_0__7__Impl();
@@ -22646,31 +22851,31 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__7__Impl"
-    // InternalEntityGrammar.g:5986:1: rule__Class__Group_2_0__7__Impl : ( ( rule__Class__InheritanceStrategyAssignment_2_0_7 )? ) ;
+    // InternalEntityGrammar.g:6028:1: rule__Class__Group_2_0__7__Impl : ( ( rule__Class__InheritanceStrategyAssignment_2_0_7 )? ) ;
     public final void rule__Class__Group_2_0__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:5990:1: ( ( ( rule__Class__InheritanceStrategyAssignment_2_0_7 )? ) )
-            // InternalEntityGrammar.g:5991:1: ( ( rule__Class__InheritanceStrategyAssignment_2_0_7 )? )
+            // InternalEntityGrammar.g:6032:1: ( ( ( rule__Class__InheritanceStrategyAssignment_2_0_7 )? ) )
+            // InternalEntityGrammar.g:6033:1: ( ( rule__Class__InheritanceStrategyAssignment_2_0_7 )? )
             {
-            // InternalEntityGrammar.g:5991:1: ( ( rule__Class__InheritanceStrategyAssignment_2_0_7 )? )
-            // InternalEntityGrammar.g:5992:2: ( rule__Class__InheritanceStrategyAssignment_2_0_7 )?
+            // InternalEntityGrammar.g:6033:1: ( ( rule__Class__InheritanceStrategyAssignment_2_0_7 )? )
+            // InternalEntityGrammar.g:6034:2: ( rule__Class__InheritanceStrategyAssignment_2_0_7 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getInheritanceStrategyAssignment_2_0_7()); 
             }
-            // InternalEntityGrammar.g:5993:2: ( rule__Class__InheritanceStrategyAssignment_2_0_7 )?
-            int alt80=2;
-            int LA80_0 = input.LA(1);
+            // InternalEntityGrammar.g:6035:2: ( rule__Class__InheritanceStrategyAssignment_2_0_7 )?
+            int alt82=2;
+            int LA82_0 = input.LA(1);
 
-            if ( (LA80_0==106||LA80_0==110) ) {
-                alt80=1;
+            if ( (LA82_0==106||LA82_0==110) ) {
+                alt82=1;
             }
-            switch (alt80) {
+            switch (alt82) {
                 case 1 :
-                    // InternalEntityGrammar.g:5993:3: rule__Class__InheritanceStrategyAssignment_2_0_7
+                    // InternalEntityGrammar.g:6035:3: rule__Class__InheritanceStrategyAssignment_2_0_7
                     {
                     pushFollow(FOLLOW_2);
                     rule__Class__InheritanceStrategyAssignment_2_0_7();
@@ -22708,14 +22913,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__8"
-    // InternalEntityGrammar.g:6001:1: rule__Class__Group_2_0__8 : rule__Class__Group_2_0__8__Impl rule__Class__Group_2_0__9 ;
+    // InternalEntityGrammar.g:6043:1: rule__Class__Group_2_0__8 : rule__Class__Group_2_0__8__Impl rule__Class__Group_2_0__9 ;
     public final void rule__Class__Group_2_0__8() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6005:1: ( rule__Class__Group_2_0__8__Impl rule__Class__Group_2_0__9 )
-            // InternalEntityGrammar.g:6006:2: rule__Class__Group_2_0__8__Impl rule__Class__Group_2_0__9
+            // InternalEntityGrammar.g:6047:1: ( rule__Class__Group_2_0__8__Impl rule__Class__Group_2_0__9 )
+            // InternalEntityGrammar.g:6048:2: rule__Class__Group_2_0__8__Impl rule__Class__Group_2_0__9
             {
             pushFollow(FOLLOW_14);
             rule__Class__Group_2_0__8__Impl();
@@ -22746,31 +22951,31 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__8__Impl"
-    // InternalEntityGrammar.g:6013:1: rule__Class__Group_2_0__8__Impl : ( ( rule__Class__Group_2_0_8__0 )? ) ;
+    // InternalEntityGrammar.g:6055:1: rule__Class__Group_2_0__8__Impl : ( ( rule__Class__Group_2_0_8__0 )? ) ;
     public final void rule__Class__Group_2_0__8__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6017:1: ( ( ( rule__Class__Group_2_0_8__0 )? ) )
-            // InternalEntityGrammar.g:6018:1: ( ( rule__Class__Group_2_0_8__0 )? )
+            // InternalEntityGrammar.g:6059:1: ( ( ( rule__Class__Group_2_0_8__0 )? ) )
+            // InternalEntityGrammar.g:6060:1: ( ( rule__Class__Group_2_0_8__0 )? )
             {
-            // InternalEntityGrammar.g:6018:1: ( ( rule__Class__Group_2_0_8__0 )? )
-            // InternalEntityGrammar.g:6019:2: ( rule__Class__Group_2_0_8__0 )?
+            // InternalEntityGrammar.g:6060:1: ( ( rule__Class__Group_2_0_8__0 )? )
+            // InternalEntityGrammar.g:6061:2: ( rule__Class__Group_2_0_8__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getGroup_2_0_8()); 
             }
-            // InternalEntityGrammar.g:6020:2: ( rule__Class__Group_2_0_8__0 )?
-            int alt81=2;
-            int LA81_0 = input.LA(1);
+            // InternalEntityGrammar.g:6062:2: ( rule__Class__Group_2_0_8__0 )?
+            int alt83=2;
+            int LA83_0 = input.LA(1);
 
-            if ( (LA81_0==92) ) {
-                alt81=1;
+            if ( (LA83_0==92) ) {
+                alt83=1;
             }
-            switch (alt81) {
+            switch (alt83) {
                 case 1 :
-                    // InternalEntityGrammar.g:6020:3: rule__Class__Group_2_0_8__0
+                    // InternalEntityGrammar.g:6062:3: rule__Class__Group_2_0_8__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Class__Group_2_0_8__0();
@@ -22808,14 +23013,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__9"
-    // InternalEntityGrammar.g:6028:1: rule__Class__Group_2_0__9 : rule__Class__Group_2_0__9__Impl rule__Class__Group_2_0__10 ;
+    // InternalEntityGrammar.g:6070:1: rule__Class__Group_2_0__9 : rule__Class__Group_2_0__9__Impl rule__Class__Group_2_0__10 ;
     public final void rule__Class__Group_2_0__9() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6032:1: ( rule__Class__Group_2_0__9__Impl rule__Class__Group_2_0__10 )
-            // InternalEntityGrammar.g:6033:2: rule__Class__Group_2_0__9__Impl rule__Class__Group_2_0__10
+            // InternalEntityGrammar.g:6074:1: ( rule__Class__Group_2_0__9__Impl rule__Class__Group_2_0__10 )
+            // InternalEntityGrammar.g:6075:2: rule__Class__Group_2_0__9__Impl rule__Class__Group_2_0__10
             {
             pushFollow(FOLLOW_14);
             rule__Class__Group_2_0__9__Impl();
@@ -22846,35 +23051,35 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__9__Impl"
-    // InternalEntityGrammar.g:6040:1: rule__Class__Group_2_0__9__Impl : ( ( rule__Class__FeaturesAssignment_2_0_9 )* ) ;
+    // InternalEntityGrammar.g:6082:1: rule__Class__Group_2_0__9__Impl : ( ( rule__Class__FeaturesAssignment_2_0_9 )* ) ;
     public final void rule__Class__Group_2_0__9__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6044:1: ( ( ( rule__Class__FeaturesAssignment_2_0_9 )* ) )
-            // InternalEntityGrammar.g:6045:1: ( ( rule__Class__FeaturesAssignment_2_0_9 )* )
+            // InternalEntityGrammar.g:6086:1: ( ( ( rule__Class__FeaturesAssignment_2_0_9 )* ) )
+            // InternalEntityGrammar.g:6087:1: ( ( rule__Class__FeaturesAssignment_2_0_9 )* )
             {
-            // InternalEntityGrammar.g:6045:1: ( ( rule__Class__FeaturesAssignment_2_0_9 )* )
-            // InternalEntityGrammar.g:6046:2: ( rule__Class__FeaturesAssignment_2_0_9 )*
+            // InternalEntityGrammar.g:6087:1: ( ( rule__Class__FeaturesAssignment_2_0_9 )* )
+            // InternalEntityGrammar.g:6088:2: ( rule__Class__FeaturesAssignment_2_0_9 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getFeaturesAssignment_2_0_9()); 
             }
-            // InternalEntityGrammar.g:6047:2: ( rule__Class__FeaturesAssignment_2_0_9 )*
-            loop82:
+            // InternalEntityGrammar.g:6089:2: ( rule__Class__FeaturesAssignment_2_0_9 )*
+            loop84:
             do {
-                int alt82=2;
-                int LA82_0 = input.LA(1);
+                int alt84=2;
+                int LA84_0 = input.LA(1);
 
-                if ( (LA82_0==16||(LA82_0>=18 && LA82_0<=22)||LA82_0==31||LA82_0==103||LA82_0==134||(LA82_0>=163 && LA82_0<=164)) ) {
-                    alt82=1;
+                if ( (LA84_0==16||(LA84_0>=18 && LA84_0<=22)||LA84_0==31||LA84_0==103||LA84_0==134||(LA84_0>=166 && LA84_0<=167)) ) {
+                    alt84=1;
                 }
 
 
-                switch (alt82) {
+                switch (alt84) {
             	case 1 :
-            	    // InternalEntityGrammar.g:6047:3: rule__Class__FeaturesAssignment_2_0_9
+            	    // InternalEntityGrammar.g:6089:3: rule__Class__FeaturesAssignment_2_0_9
             	    {
             	    pushFollow(FOLLOW_15);
             	    rule__Class__FeaturesAssignment_2_0_9();
@@ -22886,7 +23091,7 @@
             	    break;
 
             	default :
-            	    break loop82;
+            	    break loop84;
                 }
             } while (true);
 
@@ -22915,14 +23120,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__10"
-    // InternalEntityGrammar.g:6055:1: rule__Class__Group_2_0__10 : rule__Class__Group_2_0__10__Impl rule__Class__Group_2_0__11 ;
+    // InternalEntityGrammar.g:6097:1: rule__Class__Group_2_0__10 : rule__Class__Group_2_0__10__Impl rule__Class__Group_2_0__11 ;
     public final void rule__Class__Group_2_0__10() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6059:1: ( rule__Class__Group_2_0__10__Impl rule__Class__Group_2_0__11 )
-            // InternalEntityGrammar.g:6060:2: rule__Class__Group_2_0__10__Impl rule__Class__Group_2_0__11
+            // InternalEntityGrammar.g:6101:1: ( rule__Class__Group_2_0__10__Impl rule__Class__Group_2_0__11 )
+            // InternalEntityGrammar.g:6102:2: rule__Class__Group_2_0__10__Impl rule__Class__Group_2_0__11
             {
             pushFollow(FOLLOW_14);
             rule__Class__Group_2_0__10__Impl();
@@ -22953,35 +23158,35 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__10__Impl"
-    // InternalEntityGrammar.g:6067:1: rule__Class__Group_2_0__10__Impl : ( ( rule__Class__Alternatives_2_0_10 )* ) ;
+    // InternalEntityGrammar.g:6109:1: rule__Class__Group_2_0__10__Impl : ( ( rule__Class__Alternatives_2_0_10 )* ) ;
     public final void rule__Class__Group_2_0__10__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6071:1: ( ( ( rule__Class__Alternatives_2_0_10 )* ) )
-            // InternalEntityGrammar.g:6072:1: ( ( rule__Class__Alternatives_2_0_10 )* )
+            // InternalEntityGrammar.g:6113:1: ( ( ( rule__Class__Alternatives_2_0_10 )* ) )
+            // InternalEntityGrammar.g:6114:1: ( ( rule__Class__Alternatives_2_0_10 )* )
             {
-            // InternalEntityGrammar.g:6072:1: ( ( rule__Class__Alternatives_2_0_10 )* )
-            // InternalEntityGrammar.g:6073:2: ( rule__Class__Alternatives_2_0_10 )*
+            // InternalEntityGrammar.g:6114:1: ( ( rule__Class__Alternatives_2_0_10 )* )
+            // InternalEntityGrammar.g:6115:2: ( rule__Class__Alternatives_2_0_10 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getAlternatives_2_0_10()); 
             }
-            // InternalEntityGrammar.g:6074:2: ( rule__Class__Alternatives_2_0_10 )*
-            loop83:
+            // InternalEntityGrammar.g:6116:2: ( rule__Class__Alternatives_2_0_10 )*
+            loop85:
             do {
-                int alt83=2;
-                int LA83_0 = input.LA(1);
+                int alt85=2;
+                int LA85_0 = input.LA(1);
 
-                if ( (LA83_0==94||LA83_0==105||LA83_0==162) ) {
-                    alt83=1;
+                if ( (LA85_0==94||LA85_0==105||LA85_0==162) ) {
+                    alt85=1;
                 }
 
 
-                switch (alt83) {
+                switch (alt85) {
             	case 1 :
-            	    // InternalEntityGrammar.g:6074:3: rule__Class__Alternatives_2_0_10
+            	    // InternalEntityGrammar.g:6116:3: rule__Class__Alternatives_2_0_10
             	    {
             	    pushFollow(FOLLOW_16);
             	    rule__Class__Alternatives_2_0_10();
@@ -22993,7 +23198,7 @@
             	    break;
 
             	default :
-            	    break loop83;
+            	    break loop85;
                 }
             } while (true);
 
@@ -23022,14 +23227,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__11"
-    // InternalEntityGrammar.g:6082:1: rule__Class__Group_2_0__11 : rule__Class__Group_2_0__11__Impl ;
+    // InternalEntityGrammar.g:6124:1: rule__Class__Group_2_0__11 : rule__Class__Group_2_0__11__Impl ;
     public final void rule__Class__Group_2_0__11() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6086:1: ( rule__Class__Group_2_0__11__Impl )
-            // InternalEntityGrammar.g:6087:2: rule__Class__Group_2_0__11__Impl
+            // InternalEntityGrammar.g:6128:1: ( rule__Class__Group_2_0__11__Impl )
+            // InternalEntityGrammar.g:6129:2: rule__Class__Group_2_0__11__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Class__Group_2_0__11__Impl();
@@ -23055,17 +23260,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0__11__Impl"
-    // InternalEntityGrammar.g:6093:1: rule__Class__Group_2_0__11__Impl : ( '}' ) ;
+    // InternalEntityGrammar.g:6135:1: rule__Class__Group_2_0__11__Impl : ( '}' ) ;
     public final void rule__Class__Group_2_0__11__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6097:1: ( ( '}' ) )
-            // InternalEntityGrammar.g:6098:1: ( '}' )
+            // InternalEntityGrammar.g:6139:1: ( ( '}' ) )
+            // InternalEntityGrammar.g:6140:1: ( '}' )
             {
-            // InternalEntityGrammar.g:6098:1: ( '}' )
-            // InternalEntityGrammar.g:6099:2: '}'
+            // InternalEntityGrammar.g:6140:1: ( '}' )
+            // InternalEntityGrammar.g:6141:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_0_11()); 
@@ -23096,14 +23301,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_1_1_1__0"
-    // InternalEntityGrammar.g:6109:1: rule__Class__Group_2_0_1_1_1__0 : rule__Class__Group_2_0_1_1_1__0__Impl rule__Class__Group_2_0_1_1_1__1 ;
+    // InternalEntityGrammar.g:6151:1: rule__Class__Group_2_0_1_1_1__0 : rule__Class__Group_2_0_1_1_1__0__Impl rule__Class__Group_2_0_1_1_1__1 ;
     public final void rule__Class__Group_2_0_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6113:1: ( rule__Class__Group_2_0_1_1_1__0__Impl rule__Class__Group_2_0_1_1_1__1 )
-            // InternalEntityGrammar.g:6114:2: rule__Class__Group_2_0_1_1_1__0__Impl rule__Class__Group_2_0_1_1_1__1
+            // InternalEntityGrammar.g:6155:1: ( rule__Class__Group_2_0_1_1_1__0__Impl rule__Class__Group_2_0_1_1_1__1 )
+            // InternalEntityGrammar.g:6156:2: rule__Class__Group_2_0_1_1_1__0__Impl rule__Class__Group_2_0_1_1_1__1
             {
             pushFollow(FOLLOW_17);
             rule__Class__Group_2_0_1_1_1__0__Impl();
@@ -23134,23 +23339,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_1_1_1__0__Impl"
-    // InternalEntityGrammar.g:6121:1: rule__Class__Group_2_0_1_1_1__0__Impl : ( ( rule__Class__TimedependentAssignment_2_0_1_1_1_0 ) ) ;
+    // InternalEntityGrammar.g:6163:1: rule__Class__Group_2_0_1_1_1__0__Impl : ( ( rule__Class__TimedependentAssignment_2_0_1_1_1_0 ) ) ;
     public final void rule__Class__Group_2_0_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6125:1: ( ( ( rule__Class__TimedependentAssignment_2_0_1_1_1_0 ) ) )
-            // InternalEntityGrammar.g:6126:1: ( ( rule__Class__TimedependentAssignment_2_0_1_1_1_0 ) )
+            // InternalEntityGrammar.g:6167:1: ( ( ( rule__Class__TimedependentAssignment_2_0_1_1_1_0 ) ) )
+            // InternalEntityGrammar.g:6168:1: ( ( rule__Class__TimedependentAssignment_2_0_1_1_1_0 ) )
             {
-            // InternalEntityGrammar.g:6126:1: ( ( rule__Class__TimedependentAssignment_2_0_1_1_1_0 ) )
-            // InternalEntityGrammar.g:6127:2: ( rule__Class__TimedependentAssignment_2_0_1_1_1_0 )
+            // InternalEntityGrammar.g:6168:1: ( ( rule__Class__TimedependentAssignment_2_0_1_1_1_0 ) )
+            // InternalEntityGrammar.g:6169:2: ( rule__Class__TimedependentAssignment_2_0_1_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getTimedependentAssignment_2_0_1_1_1_0()); 
             }
-            // InternalEntityGrammar.g:6128:2: ( rule__Class__TimedependentAssignment_2_0_1_1_1_0 )
-            // InternalEntityGrammar.g:6128:3: rule__Class__TimedependentAssignment_2_0_1_1_1_0
+            // InternalEntityGrammar.g:6170:2: ( rule__Class__TimedependentAssignment_2_0_1_1_1_0 )
+            // InternalEntityGrammar.g:6170:3: rule__Class__TimedependentAssignment_2_0_1_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__Class__TimedependentAssignment_2_0_1_1_1_0();
@@ -23185,14 +23390,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_1_1_1__1"
-    // InternalEntityGrammar.g:6136:1: rule__Class__Group_2_0_1_1_1__1 : rule__Class__Group_2_0_1_1_1__1__Impl ;
+    // InternalEntityGrammar.g:6178:1: rule__Class__Group_2_0_1_1_1__1 : rule__Class__Group_2_0_1_1_1__1__Impl ;
     public final void rule__Class__Group_2_0_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6140:1: ( rule__Class__Group_2_0_1_1_1__1__Impl )
-            // InternalEntityGrammar.g:6141:2: rule__Class__Group_2_0_1_1_1__1__Impl
+            // InternalEntityGrammar.g:6182:1: ( rule__Class__Group_2_0_1_1_1__1__Impl )
+            // InternalEntityGrammar.g:6183:2: rule__Class__Group_2_0_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Class__Group_2_0_1_1_1__1__Impl();
@@ -23218,31 +23423,31 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_1_1_1__1__Impl"
-    // InternalEntityGrammar.g:6147:1: rule__Class__Group_2_0_1_1_1__1__Impl : ( ( rule__Class__Group_2_0_1_1_1_1__0 )? ) ;
+    // InternalEntityGrammar.g:6189:1: rule__Class__Group_2_0_1_1_1__1__Impl : ( ( rule__Class__Group_2_0_1_1_1_1__0 )? ) ;
     public final void rule__Class__Group_2_0_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6151:1: ( ( ( rule__Class__Group_2_0_1_1_1_1__0 )? ) )
-            // InternalEntityGrammar.g:6152:1: ( ( rule__Class__Group_2_0_1_1_1_1__0 )? )
+            // InternalEntityGrammar.g:6193:1: ( ( ( rule__Class__Group_2_0_1_1_1_1__0 )? ) )
+            // InternalEntityGrammar.g:6194:1: ( ( rule__Class__Group_2_0_1_1_1_1__0 )? )
             {
-            // InternalEntityGrammar.g:6152:1: ( ( rule__Class__Group_2_0_1_1_1_1__0 )? )
-            // InternalEntityGrammar.g:6153:2: ( rule__Class__Group_2_0_1_1_1_1__0 )?
+            // InternalEntityGrammar.g:6194:1: ( ( rule__Class__Group_2_0_1_1_1_1__0 )? )
+            // InternalEntityGrammar.g:6195:2: ( rule__Class__Group_2_0_1_1_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getGroup_2_0_1_1_1_1()); 
             }
-            // InternalEntityGrammar.g:6154:2: ( rule__Class__Group_2_0_1_1_1_1__0 )?
-            int alt84=2;
-            int LA84_0 = input.LA(1);
+            // InternalEntityGrammar.g:6196:2: ( rule__Class__Group_2_0_1_1_1_1__0 )?
+            int alt86=2;
+            int LA86_0 = input.LA(1);
 
-            if ( (LA84_0==90) ) {
-                alt84=1;
+            if ( (LA86_0==90) ) {
+                alt86=1;
             }
-            switch (alt84) {
+            switch (alt86) {
                 case 1 :
-                    // InternalEntityGrammar.g:6154:3: rule__Class__Group_2_0_1_1_1_1__0
+                    // InternalEntityGrammar.g:6196:3: rule__Class__Group_2_0_1_1_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Class__Group_2_0_1_1_1_1__0();
@@ -23280,14 +23485,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_1_1_1_1__0"
-    // InternalEntityGrammar.g:6163:1: rule__Class__Group_2_0_1_1_1_1__0 : rule__Class__Group_2_0_1_1_1_1__0__Impl rule__Class__Group_2_0_1_1_1_1__1 ;
+    // InternalEntityGrammar.g:6205:1: rule__Class__Group_2_0_1_1_1_1__0 : rule__Class__Group_2_0_1_1_1_1__0__Impl rule__Class__Group_2_0_1_1_1_1__1 ;
     public final void rule__Class__Group_2_0_1_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6167:1: ( rule__Class__Group_2_0_1_1_1_1__0__Impl rule__Class__Group_2_0_1_1_1_1__1 )
-            // InternalEntityGrammar.g:6168:2: rule__Class__Group_2_0_1_1_1_1__0__Impl rule__Class__Group_2_0_1_1_1_1__1
+            // InternalEntityGrammar.g:6209:1: ( rule__Class__Group_2_0_1_1_1_1__0__Impl rule__Class__Group_2_0_1_1_1_1__1 )
+            // InternalEntityGrammar.g:6210:2: rule__Class__Group_2_0_1_1_1_1__0__Impl rule__Class__Group_2_0_1_1_1_1__1
             {
             pushFollow(FOLLOW_18);
             rule__Class__Group_2_0_1_1_1_1__0__Impl();
@@ -23318,17 +23523,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_1_1_1_1__0__Impl"
-    // InternalEntityGrammar.g:6175:1: rule__Class__Group_2_0_1_1_1_1__0__Impl : ( '(' ) ;
+    // InternalEntityGrammar.g:6217:1: rule__Class__Group_2_0_1_1_1_1__0__Impl : ( '(' ) ;
     public final void rule__Class__Group_2_0_1_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6179:1: ( ( '(' ) )
-            // InternalEntityGrammar.g:6180:1: ( '(' )
+            // InternalEntityGrammar.g:6221:1: ( ( '(' ) )
+            // InternalEntityGrammar.g:6222:1: ( '(' )
             {
-            // InternalEntityGrammar.g:6180:1: ( '(' )
-            // InternalEntityGrammar.g:6181:2: '('
+            // InternalEntityGrammar.g:6222:1: ( '(' )
+            // InternalEntityGrammar.g:6223:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getLeftParenthesisKeyword_2_0_1_1_1_1_0()); 
@@ -23359,14 +23564,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_1_1_1_1__1"
-    // InternalEntityGrammar.g:6190:1: rule__Class__Group_2_0_1_1_1_1__1 : rule__Class__Group_2_0_1_1_1_1__1__Impl rule__Class__Group_2_0_1_1_1_1__2 ;
+    // InternalEntityGrammar.g:6232:1: rule__Class__Group_2_0_1_1_1_1__1 : rule__Class__Group_2_0_1_1_1_1__1__Impl rule__Class__Group_2_0_1_1_1_1__2 ;
     public final void rule__Class__Group_2_0_1_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6194:1: ( rule__Class__Group_2_0_1_1_1_1__1__Impl rule__Class__Group_2_0_1_1_1_1__2 )
-            // InternalEntityGrammar.g:6195:2: rule__Class__Group_2_0_1_1_1_1__1__Impl rule__Class__Group_2_0_1_1_1_1__2
+            // InternalEntityGrammar.g:6236:1: ( rule__Class__Group_2_0_1_1_1_1__1__Impl rule__Class__Group_2_0_1_1_1_1__2 )
+            // InternalEntityGrammar.g:6237:2: rule__Class__Group_2_0_1_1_1_1__1__Impl rule__Class__Group_2_0_1_1_1_1__2
             {
             pushFollow(FOLLOW_19);
             rule__Class__Group_2_0_1_1_1_1__1__Impl();
@@ -23397,23 +23602,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_1_1_1_1__1__Impl"
-    // InternalEntityGrammar.g:6202:1: rule__Class__Group_2_0_1_1_1_1__1__Impl : ( ( rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1 ) ) ;
+    // InternalEntityGrammar.g:6244:1: rule__Class__Group_2_0_1_1_1_1__1__Impl : ( ( rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1 ) ) ;
     public final void rule__Class__Group_2_0_1_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6206:1: ( ( ( rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1 ) ) )
-            // InternalEntityGrammar.g:6207:1: ( ( rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1 ) )
+            // InternalEntityGrammar.g:6248:1: ( ( ( rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1 ) ) )
+            // InternalEntityGrammar.g:6249:1: ( ( rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1 ) )
             {
-            // InternalEntityGrammar.g:6207:1: ( ( rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1 ) )
-            // InternalEntityGrammar.g:6208:2: ( rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1 )
+            // InternalEntityGrammar.g:6249:1: ( ( rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1 ) )
+            // InternalEntityGrammar.g:6250:2: ( rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getTimedependentDateTypeAssignment_2_0_1_1_1_1_1()); 
             }
-            // InternalEntityGrammar.g:6209:2: ( rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1 )
-            // InternalEntityGrammar.g:6209:3: rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1
+            // InternalEntityGrammar.g:6251:2: ( rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1 )
+            // InternalEntityGrammar.g:6251:3: rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1();
@@ -23448,14 +23653,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_1_1_1_1__2"
-    // InternalEntityGrammar.g:6217:1: rule__Class__Group_2_0_1_1_1_1__2 : rule__Class__Group_2_0_1_1_1_1__2__Impl ;
+    // InternalEntityGrammar.g:6259:1: rule__Class__Group_2_0_1_1_1_1__2 : rule__Class__Group_2_0_1_1_1_1__2__Impl ;
     public final void rule__Class__Group_2_0_1_1_1_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6221:1: ( rule__Class__Group_2_0_1_1_1_1__2__Impl )
-            // InternalEntityGrammar.g:6222:2: rule__Class__Group_2_0_1_1_1_1__2__Impl
+            // InternalEntityGrammar.g:6263:1: ( rule__Class__Group_2_0_1_1_1_1__2__Impl )
+            // InternalEntityGrammar.g:6264:2: rule__Class__Group_2_0_1_1_1_1__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Class__Group_2_0_1_1_1_1__2__Impl();
@@ -23481,17 +23686,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_1_1_1_1__2__Impl"
-    // InternalEntityGrammar.g:6228:1: rule__Class__Group_2_0_1_1_1_1__2__Impl : ( ')' ) ;
+    // InternalEntityGrammar.g:6270:1: rule__Class__Group_2_0_1_1_1_1__2__Impl : ( ')' ) ;
     public final void rule__Class__Group_2_0_1_1_1_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6232:1: ( ( ')' ) )
-            // InternalEntityGrammar.g:6233:1: ( ')' )
+            // InternalEntityGrammar.g:6274:1: ( ( ')' ) )
+            // InternalEntityGrammar.g:6275:1: ( ')' )
             {
-            // InternalEntityGrammar.g:6233:1: ( ')' )
-            // InternalEntityGrammar.g:6234:2: ')'
+            // InternalEntityGrammar.g:6275:1: ( ')' )
+            // InternalEntityGrammar.g:6276:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getRightParenthesisKeyword_2_0_1_1_1_1_2()); 
@@ -23522,14 +23727,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_4__0"
-    // InternalEntityGrammar.g:6244:1: rule__Class__Group_2_0_4__0 : rule__Class__Group_2_0_4__0__Impl rule__Class__Group_2_0_4__1 ;
+    // InternalEntityGrammar.g:6286:1: rule__Class__Group_2_0_4__0 : rule__Class__Group_2_0_4__0__Impl rule__Class__Group_2_0_4__1 ;
     public final void rule__Class__Group_2_0_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6248:1: ( rule__Class__Group_2_0_4__0__Impl rule__Class__Group_2_0_4__1 )
-            // InternalEntityGrammar.g:6249:2: rule__Class__Group_2_0_4__0__Impl rule__Class__Group_2_0_4__1
+            // InternalEntityGrammar.g:6290:1: ( rule__Class__Group_2_0_4__0__Impl rule__Class__Group_2_0_4__1 )
+            // InternalEntityGrammar.g:6291:2: rule__Class__Group_2_0_4__0__Impl rule__Class__Group_2_0_4__1
             {
             pushFollow(FOLLOW_20);
             rule__Class__Group_2_0_4__0__Impl();
@@ -23560,17 +23765,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_4__0__Impl"
-    // InternalEntityGrammar.g:6256:1: rule__Class__Group_2_0_4__0__Impl : ( 'extends' ) ;
+    // InternalEntityGrammar.g:6298:1: rule__Class__Group_2_0_4__0__Impl : ( 'extends' ) ;
     public final void rule__Class__Group_2_0_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6260:1: ( ( 'extends' ) )
-            // InternalEntityGrammar.g:6261:1: ( 'extends' )
+            // InternalEntityGrammar.g:6302:1: ( ( 'extends' ) )
+            // InternalEntityGrammar.g:6303:1: ( 'extends' )
             {
-            // InternalEntityGrammar.g:6261:1: ( 'extends' )
-            // InternalEntityGrammar.g:6262:2: 'extends'
+            // InternalEntityGrammar.g:6303:1: ( 'extends' )
+            // InternalEntityGrammar.g:6304:2: 'extends'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getExtendsKeyword_2_0_4_0()); 
@@ -23601,14 +23806,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_4__1"
-    // InternalEntityGrammar.g:6271:1: rule__Class__Group_2_0_4__1 : rule__Class__Group_2_0_4__1__Impl ;
+    // InternalEntityGrammar.g:6313:1: rule__Class__Group_2_0_4__1 : rule__Class__Group_2_0_4__1__Impl ;
     public final void rule__Class__Group_2_0_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6275:1: ( rule__Class__Group_2_0_4__1__Impl )
-            // InternalEntityGrammar.g:6276:2: rule__Class__Group_2_0_4__1__Impl
+            // InternalEntityGrammar.g:6317:1: ( rule__Class__Group_2_0_4__1__Impl )
+            // InternalEntityGrammar.g:6318:2: rule__Class__Group_2_0_4__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Class__Group_2_0_4__1__Impl();
@@ -23634,23 +23839,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_4__1__Impl"
-    // InternalEntityGrammar.g:6282:1: rule__Class__Group_2_0_4__1__Impl : ( ( rule__Class__SuperTypeAssignment_2_0_4_1 ) ) ;
+    // InternalEntityGrammar.g:6324:1: rule__Class__Group_2_0_4__1__Impl : ( ( rule__Class__SuperTypeAssignment_2_0_4_1 ) ) ;
     public final void rule__Class__Group_2_0_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6286:1: ( ( ( rule__Class__SuperTypeAssignment_2_0_4_1 ) ) )
-            // InternalEntityGrammar.g:6287:1: ( ( rule__Class__SuperTypeAssignment_2_0_4_1 ) )
+            // InternalEntityGrammar.g:6328:1: ( ( ( rule__Class__SuperTypeAssignment_2_0_4_1 ) ) )
+            // InternalEntityGrammar.g:6329:1: ( ( rule__Class__SuperTypeAssignment_2_0_4_1 ) )
             {
-            // InternalEntityGrammar.g:6287:1: ( ( rule__Class__SuperTypeAssignment_2_0_4_1 ) )
-            // InternalEntityGrammar.g:6288:2: ( rule__Class__SuperTypeAssignment_2_0_4_1 )
+            // InternalEntityGrammar.g:6329:1: ( ( rule__Class__SuperTypeAssignment_2_0_4_1 ) )
+            // InternalEntityGrammar.g:6330:2: ( rule__Class__SuperTypeAssignment_2_0_4_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getSuperTypeAssignment_2_0_4_1()); 
             }
-            // InternalEntityGrammar.g:6289:2: ( rule__Class__SuperTypeAssignment_2_0_4_1 )
-            // InternalEntityGrammar.g:6289:3: rule__Class__SuperTypeAssignment_2_0_4_1
+            // InternalEntityGrammar.g:6331:2: ( rule__Class__SuperTypeAssignment_2_0_4_1 )
+            // InternalEntityGrammar.g:6331:3: rule__Class__SuperTypeAssignment_2_0_4_1
             {
             pushFollow(FOLLOW_2);
             rule__Class__SuperTypeAssignment_2_0_4_1();
@@ -23685,14 +23890,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_8__0"
-    // InternalEntityGrammar.g:6298:1: rule__Class__Group_2_0_8__0 : rule__Class__Group_2_0_8__0__Impl rule__Class__Group_2_0_8__1 ;
+    // InternalEntityGrammar.g:6340:1: rule__Class__Group_2_0_8__0 : rule__Class__Group_2_0_8__0__Impl rule__Class__Group_2_0_8__1 ;
     public final void rule__Class__Group_2_0_8__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6302:1: ( rule__Class__Group_2_0_8__0__Impl rule__Class__Group_2_0_8__1 )
-            // InternalEntityGrammar.g:6303:2: rule__Class__Group_2_0_8__0__Impl rule__Class__Group_2_0_8__1
+            // InternalEntityGrammar.g:6344:1: ( rule__Class__Group_2_0_8__0__Impl rule__Class__Group_2_0_8__1 )
+            // InternalEntityGrammar.g:6345:2: rule__Class__Group_2_0_8__0__Impl rule__Class__Group_2_0_8__1
             {
             pushFollow(FOLLOW_21);
             rule__Class__Group_2_0_8__0__Impl();
@@ -23723,17 +23928,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_8__0__Impl"
-    // InternalEntityGrammar.g:6310:1: rule__Class__Group_2_0_8__0__Impl : ( 'persistenceUnit' ) ;
+    // InternalEntityGrammar.g:6352:1: rule__Class__Group_2_0_8__0__Impl : ( 'persistenceUnit' ) ;
     public final void rule__Class__Group_2_0_8__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6314:1: ( ( 'persistenceUnit' ) )
-            // InternalEntityGrammar.g:6315:1: ( 'persistenceUnit' )
+            // InternalEntityGrammar.g:6356:1: ( ( 'persistenceUnit' ) )
+            // InternalEntityGrammar.g:6357:1: ( 'persistenceUnit' )
             {
-            // InternalEntityGrammar.g:6315:1: ( 'persistenceUnit' )
-            // InternalEntityGrammar.g:6316:2: 'persistenceUnit'
+            // InternalEntityGrammar.g:6357:1: ( 'persistenceUnit' )
+            // InternalEntityGrammar.g:6358:2: 'persistenceUnit'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getPersistenceUnitKeyword_2_0_8_0()); 
@@ -23764,14 +23969,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_8__1"
-    // InternalEntityGrammar.g:6325:1: rule__Class__Group_2_0_8__1 : rule__Class__Group_2_0_8__1__Impl ;
+    // InternalEntityGrammar.g:6367:1: rule__Class__Group_2_0_8__1 : rule__Class__Group_2_0_8__1__Impl ;
     public final void rule__Class__Group_2_0_8__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6329:1: ( rule__Class__Group_2_0_8__1__Impl )
-            // InternalEntityGrammar.g:6330:2: rule__Class__Group_2_0_8__1__Impl
+            // InternalEntityGrammar.g:6371:1: ( rule__Class__Group_2_0_8__1__Impl )
+            // InternalEntityGrammar.g:6372:2: rule__Class__Group_2_0_8__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Class__Group_2_0_8__1__Impl();
@@ -23797,23 +24002,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_0_8__1__Impl"
-    // InternalEntityGrammar.g:6336:1: rule__Class__Group_2_0_8__1__Impl : ( ( rule__Class__PersistenceUnitAssignment_2_0_8_1 ) ) ;
+    // InternalEntityGrammar.g:6378:1: rule__Class__Group_2_0_8__1__Impl : ( ( rule__Class__PersistenceUnitAssignment_2_0_8_1 ) ) ;
     public final void rule__Class__Group_2_0_8__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6340:1: ( ( ( rule__Class__PersistenceUnitAssignment_2_0_8_1 ) ) )
-            // InternalEntityGrammar.g:6341:1: ( ( rule__Class__PersistenceUnitAssignment_2_0_8_1 ) )
+            // InternalEntityGrammar.g:6382:1: ( ( ( rule__Class__PersistenceUnitAssignment_2_0_8_1 ) ) )
+            // InternalEntityGrammar.g:6383:1: ( ( rule__Class__PersistenceUnitAssignment_2_0_8_1 ) )
             {
-            // InternalEntityGrammar.g:6341:1: ( ( rule__Class__PersistenceUnitAssignment_2_0_8_1 ) )
-            // InternalEntityGrammar.g:6342:2: ( rule__Class__PersistenceUnitAssignment_2_0_8_1 )
+            // InternalEntityGrammar.g:6383:1: ( ( rule__Class__PersistenceUnitAssignment_2_0_8_1 ) )
+            // InternalEntityGrammar.g:6384:2: ( rule__Class__PersistenceUnitAssignment_2_0_8_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getPersistenceUnitAssignment_2_0_8_1()); 
             }
-            // InternalEntityGrammar.g:6343:2: ( rule__Class__PersistenceUnitAssignment_2_0_8_1 )
-            // InternalEntityGrammar.g:6343:3: rule__Class__PersistenceUnitAssignment_2_0_8_1
+            // InternalEntityGrammar.g:6385:2: ( rule__Class__PersistenceUnitAssignment_2_0_8_1 )
+            // InternalEntityGrammar.g:6385:3: rule__Class__PersistenceUnitAssignment_2_0_8_1
             {
             pushFollow(FOLLOW_2);
             rule__Class__PersistenceUnitAssignment_2_0_8_1();
@@ -23848,14 +24053,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__0"
-    // InternalEntityGrammar.g:6352:1: rule__Class__Group_2_1__0 : rule__Class__Group_2_1__0__Impl rule__Class__Group_2_1__1 ;
+    // InternalEntityGrammar.g:6394:1: rule__Class__Group_2_1__0 : rule__Class__Group_2_1__0__Impl rule__Class__Group_2_1__1 ;
     public final void rule__Class__Group_2_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6356:1: ( rule__Class__Group_2_1__0__Impl rule__Class__Group_2_1__1 )
-            // InternalEntityGrammar.g:6357:2: rule__Class__Group_2_1__0__Impl rule__Class__Group_2_1__1
+            // InternalEntityGrammar.g:6398:1: ( rule__Class__Group_2_1__0__Impl rule__Class__Group_2_1__1 )
+            // InternalEntityGrammar.g:6399:2: rule__Class__Group_2_1__0__Impl rule__Class__Group_2_1__1
             {
             pushFollow(FOLLOW_22);
             rule__Class__Group_2_1__0__Impl();
@@ -23886,23 +24091,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__0__Impl"
-    // InternalEntityGrammar.g:6364:1: rule__Class__Group_2_1__0__Impl : ( () ) ;
+    // InternalEntityGrammar.g:6406:1: rule__Class__Group_2_1__0__Impl : ( () ) ;
     public final void rule__Class__Group_2_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6368:1: ( ( () ) )
-            // InternalEntityGrammar.g:6369:1: ( () )
+            // InternalEntityGrammar.g:6410:1: ( ( () ) )
+            // InternalEntityGrammar.g:6411:1: ( () )
             {
-            // InternalEntityGrammar.g:6369:1: ( () )
-            // InternalEntityGrammar.g:6370:2: ()
+            // InternalEntityGrammar.g:6411:1: ( () )
+            // InternalEntityGrammar.g:6412:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getLEntityAnnotationInfoAction_2_1_0()); 
             }
-            // InternalEntityGrammar.g:6371:2: ()
-            // InternalEntityGrammar.g:6371:3: 
+            // InternalEntityGrammar.g:6413:2: ()
+            // InternalEntityGrammar.g:6413:3: 
             {
             }
 
@@ -23927,14 +24132,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__1"
-    // InternalEntityGrammar.g:6379:1: rule__Class__Group_2_1__1 : rule__Class__Group_2_1__1__Impl rule__Class__Group_2_1__2 ;
+    // InternalEntityGrammar.g:6421:1: rule__Class__Group_2_1__1 : rule__Class__Group_2_1__1__Impl rule__Class__Group_2_1__2 ;
     public final void rule__Class__Group_2_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6383:1: ( rule__Class__Group_2_1__1__Impl rule__Class__Group_2_1__2 )
-            // InternalEntityGrammar.g:6384:2: rule__Class__Group_2_1__1__Impl rule__Class__Group_2_1__2
+            // InternalEntityGrammar.g:6425:1: ( rule__Class__Group_2_1__1__Impl rule__Class__Group_2_1__2 )
+            // InternalEntityGrammar.g:6426:2: rule__Class__Group_2_1__1__Impl rule__Class__Group_2_1__2
             {
             pushFollow(FOLLOW_23);
             rule__Class__Group_2_1__1__Impl();
@@ -23965,23 +24170,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__1__Impl"
-    // InternalEntityGrammar.g:6391:1: rule__Class__Group_2_1__1__Impl : ( ( rule__Class__MappedSuperclassAssignment_2_1_1 ) ) ;
+    // InternalEntityGrammar.g:6433:1: rule__Class__Group_2_1__1__Impl : ( ( rule__Class__MappedSuperclassAssignment_2_1_1 ) ) ;
     public final void rule__Class__Group_2_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6395:1: ( ( ( rule__Class__MappedSuperclassAssignment_2_1_1 ) ) )
-            // InternalEntityGrammar.g:6396:1: ( ( rule__Class__MappedSuperclassAssignment_2_1_1 ) )
+            // InternalEntityGrammar.g:6437:1: ( ( ( rule__Class__MappedSuperclassAssignment_2_1_1 ) ) )
+            // InternalEntityGrammar.g:6438:1: ( ( rule__Class__MappedSuperclassAssignment_2_1_1 ) )
             {
-            // InternalEntityGrammar.g:6396:1: ( ( rule__Class__MappedSuperclassAssignment_2_1_1 ) )
-            // InternalEntityGrammar.g:6397:2: ( rule__Class__MappedSuperclassAssignment_2_1_1 )
+            // InternalEntityGrammar.g:6438:1: ( ( rule__Class__MappedSuperclassAssignment_2_1_1 ) )
+            // InternalEntityGrammar.g:6439:2: ( rule__Class__MappedSuperclassAssignment_2_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getMappedSuperclassAssignment_2_1_1()); 
             }
-            // InternalEntityGrammar.g:6398:2: ( rule__Class__MappedSuperclassAssignment_2_1_1 )
-            // InternalEntityGrammar.g:6398:3: rule__Class__MappedSuperclassAssignment_2_1_1
+            // InternalEntityGrammar.g:6440:2: ( rule__Class__MappedSuperclassAssignment_2_1_1 )
+            // InternalEntityGrammar.g:6440:3: rule__Class__MappedSuperclassAssignment_2_1_1
             {
             pushFollow(FOLLOW_2);
             rule__Class__MappedSuperclassAssignment_2_1_1();
@@ -24016,14 +24221,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__2"
-    // InternalEntityGrammar.g:6406:1: rule__Class__Group_2_1__2 : rule__Class__Group_2_1__2__Impl rule__Class__Group_2_1__3 ;
+    // InternalEntityGrammar.g:6448:1: rule__Class__Group_2_1__2 : rule__Class__Group_2_1__2__Impl rule__Class__Group_2_1__3 ;
     public final void rule__Class__Group_2_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6410:1: ( rule__Class__Group_2_1__2__Impl rule__Class__Group_2_1__3 )
-            // InternalEntityGrammar.g:6411:2: rule__Class__Group_2_1__2__Impl rule__Class__Group_2_1__3
+            // InternalEntityGrammar.g:6452:1: ( rule__Class__Group_2_1__2__Impl rule__Class__Group_2_1__3 )
+            // InternalEntityGrammar.g:6453:2: rule__Class__Group_2_1__2__Impl rule__Class__Group_2_1__3
             {
             pushFollow(FOLLOW_23);
             rule__Class__Group_2_1__2__Impl();
@@ -24054,31 +24259,31 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__2__Impl"
-    // InternalEntityGrammar.g:6418:1: rule__Class__Group_2_1__2__Impl : ( ( rule__Class__Group_2_1_2__0 )? ) ;
+    // InternalEntityGrammar.g:6460:1: rule__Class__Group_2_1__2__Impl : ( ( rule__Class__Group_2_1_2__0 )? ) ;
     public final void rule__Class__Group_2_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6422:1: ( ( ( rule__Class__Group_2_1_2__0 )? ) )
-            // InternalEntityGrammar.g:6423:1: ( ( rule__Class__Group_2_1_2__0 )? )
+            // InternalEntityGrammar.g:6464:1: ( ( ( rule__Class__Group_2_1_2__0 )? ) )
+            // InternalEntityGrammar.g:6465:1: ( ( rule__Class__Group_2_1_2__0 )? )
             {
-            // InternalEntityGrammar.g:6423:1: ( ( rule__Class__Group_2_1_2__0 )? )
-            // InternalEntityGrammar.g:6424:2: ( rule__Class__Group_2_1_2__0 )?
+            // InternalEntityGrammar.g:6465:1: ( ( rule__Class__Group_2_1_2__0 )? )
+            // InternalEntityGrammar.g:6466:2: ( rule__Class__Group_2_1_2__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getGroup_2_1_2()); 
             }
-            // InternalEntityGrammar.g:6425:2: ( rule__Class__Group_2_1_2__0 )?
-            int alt85=2;
-            int LA85_0 = input.LA(1);
+            // InternalEntityGrammar.g:6467:2: ( rule__Class__Group_2_1_2__0 )?
+            int alt87=2;
+            int LA87_0 = input.LA(1);
 
-            if ( (LA85_0==62) ) {
-                alt85=1;
+            if ( (LA87_0==62) ) {
+                alt87=1;
             }
-            switch (alt85) {
+            switch (alt87) {
                 case 1 :
-                    // InternalEntityGrammar.g:6425:3: rule__Class__Group_2_1_2__0
+                    // InternalEntityGrammar.g:6467:3: rule__Class__Group_2_1_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Class__Group_2_1_2__0();
@@ -24116,14 +24321,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__3"
-    // InternalEntityGrammar.g:6433:1: rule__Class__Group_2_1__3 : rule__Class__Group_2_1__3__Impl rule__Class__Group_2_1__4 ;
+    // InternalEntityGrammar.g:6475:1: rule__Class__Group_2_1__3 : rule__Class__Group_2_1__3__Impl rule__Class__Group_2_1__4 ;
     public final void rule__Class__Group_2_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6437:1: ( rule__Class__Group_2_1__3__Impl rule__Class__Group_2_1__4 )
-            // InternalEntityGrammar.g:6438:2: rule__Class__Group_2_1__3__Impl rule__Class__Group_2_1__4
+            // InternalEntityGrammar.g:6479:1: ( rule__Class__Group_2_1__3__Impl rule__Class__Group_2_1__4 )
+            // InternalEntityGrammar.g:6480:2: rule__Class__Group_2_1__3__Impl rule__Class__Group_2_1__4
             {
             pushFollow(FOLLOW_24);
             rule__Class__Group_2_1__3__Impl();
@@ -24154,23 +24359,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__3__Impl"
-    // InternalEntityGrammar.g:6445:1: rule__Class__Group_2_1__3__Impl : ( ( rule__Class__NameAssignment_2_1_3 ) ) ;
+    // InternalEntityGrammar.g:6487:1: rule__Class__Group_2_1__3__Impl : ( ( rule__Class__NameAssignment_2_1_3 ) ) ;
     public final void rule__Class__Group_2_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6449:1: ( ( ( rule__Class__NameAssignment_2_1_3 ) ) )
-            // InternalEntityGrammar.g:6450:1: ( ( rule__Class__NameAssignment_2_1_3 ) )
+            // InternalEntityGrammar.g:6491:1: ( ( ( rule__Class__NameAssignment_2_1_3 ) ) )
+            // InternalEntityGrammar.g:6492:1: ( ( rule__Class__NameAssignment_2_1_3 ) )
             {
-            // InternalEntityGrammar.g:6450:1: ( ( rule__Class__NameAssignment_2_1_3 ) )
-            // InternalEntityGrammar.g:6451:2: ( rule__Class__NameAssignment_2_1_3 )
+            // InternalEntityGrammar.g:6492:1: ( ( rule__Class__NameAssignment_2_1_3 ) )
+            // InternalEntityGrammar.g:6493:2: ( rule__Class__NameAssignment_2_1_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getNameAssignment_2_1_3()); 
             }
-            // InternalEntityGrammar.g:6452:2: ( rule__Class__NameAssignment_2_1_3 )
-            // InternalEntityGrammar.g:6452:3: rule__Class__NameAssignment_2_1_3
+            // InternalEntityGrammar.g:6494:2: ( rule__Class__NameAssignment_2_1_3 )
+            // InternalEntityGrammar.g:6494:3: rule__Class__NameAssignment_2_1_3
             {
             pushFollow(FOLLOW_2);
             rule__Class__NameAssignment_2_1_3();
@@ -24205,14 +24410,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__4"
-    // InternalEntityGrammar.g:6460:1: rule__Class__Group_2_1__4 : rule__Class__Group_2_1__4__Impl rule__Class__Group_2_1__5 ;
+    // InternalEntityGrammar.g:6502:1: rule__Class__Group_2_1__4 : rule__Class__Group_2_1__4__Impl rule__Class__Group_2_1__5 ;
     public final void rule__Class__Group_2_1__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6464:1: ( rule__Class__Group_2_1__4__Impl rule__Class__Group_2_1__5 )
-            // InternalEntityGrammar.g:6465:2: rule__Class__Group_2_1__4__Impl rule__Class__Group_2_1__5
+            // InternalEntityGrammar.g:6506:1: ( rule__Class__Group_2_1__4__Impl rule__Class__Group_2_1__5 )
+            // InternalEntityGrammar.g:6507:2: rule__Class__Group_2_1__4__Impl rule__Class__Group_2_1__5
             {
             pushFollow(FOLLOW_25);
             rule__Class__Group_2_1__4__Impl();
@@ -24243,17 +24448,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__4__Impl"
-    // InternalEntityGrammar.g:6472:1: rule__Class__Group_2_1__4__Impl : ( '{' ) ;
+    // InternalEntityGrammar.g:6514:1: rule__Class__Group_2_1__4__Impl : ( '{' ) ;
     public final void rule__Class__Group_2_1__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6476:1: ( ( '{' ) )
-            // InternalEntityGrammar.g:6477:1: ( '{' )
+            // InternalEntityGrammar.g:6518:1: ( ( '{' ) )
+            // InternalEntityGrammar.g:6519:1: ( '{' )
             {
-            // InternalEntityGrammar.g:6477:1: ( '{' )
-            // InternalEntityGrammar.g:6478:2: '{'
+            // InternalEntityGrammar.g:6519:1: ( '{' )
+            // InternalEntityGrammar.g:6520:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_1_4()); 
@@ -24284,14 +24489,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__5"
-    // InternalEntityGrammar.g:6487:1: rule__Class__Group_2_1__5 : rule__Class__Group_2_1__5__Impl rule__Class__Group_2_1__6 ;
+    // InternalEntityGrammar.g:6529:1: rule__Class__Group_2_1__5 : rule__Class__Group_2_1__5__Impl rule__Class__Group_2_1__6 ;
     public final void rule__Class__Group_2_1__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6491:1: ( rule__Class__Group_2_1__5__Impl rule__Class__Group_2_1__6 )
-            // InternalEntityGrammar.g:6492:2: rule__Class__Group_2_1__5__Impl rule__Class__Group_2_1__6
+            // InternalEntityGrammar.g:6533:1: ( rule__Class__Group_2_1__5__Impl rule__Class__Group_2_1__6 )
+            // InternalEntityGrammar.g:6534:2: rule__Class__Group_2_1__5__Impl rule__Class__Group_2_1__6
             {
             pushFollow(FOLLOW_25);
             rule__Class__Group_2_1__5__Impl();
@@ -24322,31 +24527,31 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__5__Impl"
-    // InternalEntityGrammar.g:6499:1: rule__Class__Group_2_1__5__Impl : ( ( rule__Class__Group_2_1_5__0 )? ) ;
+    // InternalEntityGrammar.g:6541:1: rule__Class__Group_2_1__5__Impl : ( ( rule__Class__Group_2_1_5__0 )? ) ;
     public final void rule__Class__Group_2_1__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6503:1: ( ( ( rule__Class__Group_2_1_5__0 )? ) )
-            // InternalEntityGrammar.g:6504:1: ( ( rule__Class__Group_2_1_5__0 )? )
+            // InternalEntityGrammar.g:6545:1: ( ( ( rule__Class__Group_2_1_5__0 )? ) )
+            // InternalEntityGrammar.g:6546:1: ( ( rule__Class__Group_2_1_5__0 )? )
             {
-            // InternalEntityGrammar.g:6504:1: ( ( rule__Class__Group_2_1_5__0 )? )
-            // InternalEntityGrammar.g:6505:2: ( rule__Class__Group_2_1_5__0 )?
+            // InternalEntityGrammar.g:6546:1: ( ( rule__Class__Group_2_1_5__0 )? )
+            // InternalEntityGrammar.g:6547:2: ( rule__Class__Group_2_1_5__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getGroup_2_1_5()); 
             }
-            // InternalEntityGrammar.g:6506:2: ( rule__Class__Group_2_1_5__0 )?
-            int alt86=2;
-            int LA86_0 = input.LA(1);
+            // InternalEntityGrammar.g:6548:2: ( rule__Class__Group_2_1_5__0 )?
+            int alt88=2;
+            int LA88_0 = input.LA(1);
 
-            if ( (LA86_0==92) ) {
-                alt86=1;
+            if ( (LA88_0==92) ) {
+                alt88=1;
             }
-            switch (alt86) {
+            switch (alt88) {
                 case 1 :
-                    // InternalEntityGrammar.g:6506:3: rule__Class__Group_2_1_5__0
+                    // InternalEntityGrammar.g:6548:3: rule__Class__Group_2_1_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Class__Group_2_1_5__0();
@@ -24384,14 +24589,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__6"
-    // InternalEntityGrammar.g:6514:1: rule__Class__Group_2_1__6 : rule__Class__Group_2_1__6__Impl rule__Class__Group_2_1__7 ;
+    // InternalEntityGrammar.g:6556:1: rule__Class__Group_2_1__6 : rule__Class__Group_2_1__6__Impl rule__Class__Group_2_1__7 ;
     public final void rule__Class__Group_2_1__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6518:1: ( rule__Class__Group_2_1__6__Impl rule__Class__Group_2_1__7 )
-            // InternalEntityGrammar.g:6519:2: rule__Class__Group_2_1__6__Impl rule__Class__Group_2_1__7
+            // InternalEntityGrammar.g:6560:1: ( rule__Class__Group_2_1__6__Impl rule__Class__Group_2_1__7 )
+            // InternalEntityGrammar.g:6561:2: rule__Class__Group_2_1__6__Impl rule__Class__Group_2_1__7
             {
             pushFollow(FOLLOW_25);
             rule__Class__Group_2_1__6__Impl();
@@ -24422,35 +24627,35 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__6__Impl"
-    // InternalEntityGrammar.g:6526:1: rule__Class__Group_2_1__6__Impl : ( ( rule__Class__FeaturesAssignment_2_1_6 )* ) ;
+    // InternalEntityGrammar.g:6568:1: rule__Class__Group_2_1__6__Impl : ( ( rule__Class__FeaturesAssignment_2_1_6 )* ) ;
     public final void rule__Class__Group_2_1__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6530:1: ( ( ( rule__Class__FeaturesAssignment_2_1_6 )* ) )
-            // InternalEntityGrammar.g:6531:1: ( ( rule__Class__FeaturesAssignment_2_1_6 )* )
+            // InternalEntityGrammar.g:6572:1: ( ( ( rule__Class__FeaturesAssignment_2_1_6 )* ) )
+            // InternalEntityGrammar.g:6573:1: ( ( rule__Class__FeaturesAssignment_2_1_6 )* )
             {
-            // InternalEntityGrammar.g:6531:1: ( ( rule__Class__FeaturesAssignment_2_1_6 )* )
-            // InternalEntityGrammar.g:6532:2: ( rule__Class__FeaturesAssignment_2_1_6 )*
+            // InternalEntityGrammar.g:6573:1: ( ( rule__Class__FeaturesAssignment_2_1_6 )* )
+            // InternalEntityGrammar.g:6574:2: ( rule__Class__FeaturesAssignment_2_1_6 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getFeaturesAssignment_2_1_6()); 
             }
-            // InternalEntityGrammar.g:6533:2: ( rule__Class__FeaturesAssignment_2_1_6 )*
-            loop87:
+            // InternalEntityGrammar.g:6575:2: ( rule__Class__FeaturesAssignment_2_1_6 )*
+            loop89:
             do {
-                int alt87=2;
-                int LA87_0 = input.LA(1);
+                int alt89=2;
+                int LA89_0 = input.LA(1);
 
-                if ( (LA87_0==16||(LA87_0>=18 && LA87_0<=22)||LA87_0==31||LA87_0==103||LA87_0==134||(LA87_0>=163 && LA87_0<=164)) ) {
-                    alt87=1;
+                if ( (LA89_0==16||(LA89_0>=18 && LA89_0<=22)||LA89_0==31||LA89_0==103||LA89_0==134||(LA89_0>=166 && LA89_0<=167)) ) {
+                    alt89=1;
                 }
 
 
-                switch (alt87) {
+                switch (alt89) {
             	case 1 :
-            	    // InternalEntityGrammar.g:6533:3: rule__Class__FeaturesAssignment_2_1_6
+            	    // InternalEntityGrammar.g:6575:3: rule__Class__FeaturesAssignment_2_1_6
             	    {
             	    pushFollow(FOLLOW_15);
             	    rule__Class__FeaturesAssignment_2_1_6();
@@ -24462,7 +24667,7 @@
             	    break;
 
             	default :
-            	    break loop87;
+            	    break loop89;
                 }
             } while (true);
 
@@ -24491,14 +24696,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__7"
-    // InternalEntityGrammar.g:6541:1: rule__Class__Group_2_1__7 : rule__Class__Group_2_1__7__Impl ;
+    // InternalEntityGrammar.g:6583:1: rule__Class__Group_2_1__7 : rule__Class__Group_2_1__7__Impl ;
     public final void rule__Class__Group_2_1__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6545:1: ( rule__Class__Group_2_1__7__Impl )
-            // InternalEntityGrammar.g:6546:2: rule__Class__Group_2_1__7__Impl
+            // InternalEntityGrammar.g:6587:1: ( rule__Class__Group_2_1__7__Impl )
+            // InternalEntityGrammar.g:6588:2: rule__Class__Group_2_1__7__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Class__Group_2_1__7__Impl();
@@ -24524,17 +24729,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1__7__Impl"
-    // InternalEntityGrammar.g:6552:1: rule__Class__Group_2_1__7__Impl : ( '}' ) ;
+    // InternalEntityGrammar.g:6594:1: rule__Class__Group_2_1__7__Impl : ( '}' ) ;
     public final void rule__Class__Group_2_1__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6556:1: ( ( '}' ) )
-            // InternalEntityGrammar.g:6557:1: ( '}' )
+            // InternalEntityGrammar.g:6598:1: ( ( '}' ) )
+            // InternalEntityGrammar.g:6599:1: ( '}' )
             {
-            // InternalEntityGrammar.g:6557:1: ( '}' )
-            // InternalEntityGrammar.g:6558:2: '}'
+            // InternalEntityGrammar.g:6599:1: ( '}' )
+            // InternalEntityGrammar.g:6600:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_1_7()); 
@@ -24565,14 +24770,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1_2__0"
-    // InternalEntityGrammar.g:6568:1: rule__Class__Group_2_1_2__0 : rule__Class__Group_2_1_2__0__Impl rule__Class__Group_2_1_2__1 ;
+    // InternalEntityGrammar.g:6610:1: rule__Class__Group_2_1_2__0 : rule__Class__Group_2_1_2__0__Impl rule__Class__Group_2_1_2__1 ;
     public final void rule__Class__Group_2_1_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6572:1: ( rule__Class__Group_2_1_2__0__Impl rule__Class__Group_2_1_2__1 )
-            // InternalEntityGrammar.g:6573:2: rule__Class__Group_2_1_2__0__Impl rule__Class__Group_2_1_2__1
+            // InternalEntityGrammar.g:6614:1: ( rule__Class__Group_2_1_2__0__Impl rule__Class__Group_2_1_2__1 )
+            // InternalEntityGrammar.g:6615:2: rule__Class__Group_2_1_2__0__Impl rule__Class__Group_2_1_2__1
             {
             pushFollow(FOLLOW_20);
             rule__Class__Group_2_1_2__0__Impl();
@@ -24603,17 +24808,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1_2__0__Impl"
-    // InternalEntityGrammar.g:6580:1: rule__Class__Group_2_1_2__0__Impl : ( 'extends' ) ;
+    // InternalEntityGrammar.g:6622:1: rule__Class__Group_2_1_2__0__Impl : ( 'extends' ) ;
     public final void rule__Class__Group_2_1_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6584:1: ( ( 'extends' ) )
-            // InternalEntityGrammar.g:6585:1: ( 'extends' )
+            // InternalEntityGrammar.g:6626:1: ( ( 'extends' ) )
+            // InternalEntityGrammar.g:6627:1: ( 'extends' )
             {
-            // InternalEntityGrammar.g:6585:1: ( 'extends' )
-            // InternalEntityGrammar.g:6586:2: 'extends'
+            // InternalEntityGrammar.g:6627:1: ( 'extends' )
+            // InternalEntityGrammar.g:6628:2: 'extends'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getExtendsKeyword_2_1_2_0()); 
@@ -24644,14 +24849,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1_2__1"
-    // InternalEntityGrammar.g:6595:1: rule__Class__Group_2_1_2__1 : rule__Class__Group_2_1_2__1__Impl ;
+    // InternalEntityGrammar.g:6637:1: rule__Class__Group_2_1_2__1 : rule__Class__Group_2_1_2__1__Impl ;
     public final void rule__Class__Group_2_1_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6599:1: ( rule__Class__Group_2_1_2__1__Impl )
-            // InternalEntityGrammar.g:6600:2: rule__Class__Group_2_1_2__1__Impl
+            // InternalEntityGrammar.g:6641:1: ( rule__Class__Group_2_1_2__1__Impl )
+            // InternalEntityGrammar.g:6642:2: rule__Class__Group_2_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Class__Group_2_1_2__1__Impl();
@@ -24677,23 +24882,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1_2__1__Impl"
-    // InternalEntityGrammar.g:6606:1: rule__Class__Group_2_1_2__1__Impl : ( ( rule__Class__SuperTypeAssignment_2_1_2_1 ) ) ;
+    // InternalEntityGrammar.g:6648:1: rule__Class__Group_2_1_2__1__Impl : ( ( rule__Class__SuperTypeAssignment_2_1_2_1 ) ) ;
     public final void rule__Class__Group_2_1_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6610:1: ( ( ( rule__Class__SuperTypeAssignment_2_1_2_1 ) ) )
-            // InternalEntityGrammar.g:6611:1: ( ( rule__Class__SuperTypeAssignment_2_1_2_1 ) )
+            // InternalEntityGrammar.g:6652:1: ( ( ( rule__Class__SuperTypeAssignment_2_1_2_1 ) ) )
+            // InternalEntityGrammar.g:6653:1: ( ( rule__Class__SuperTypeAssignment_2_1_2_1 ) )
             {
-            // InternalEntityGrammar.g:6611:1: ( ( rule__Class__SuperTypeAssignment_2_1_2_1 ) )
-            // InternalEntityGrammar.g:6612:2: ( rule__Class__SuperTypeAssignment_2_1_2_1 )
+            // InternalEntityGrammar.g:6653:1: ( ( rule__Class__SuperTypeAssignment_2_1_2_1 ) )
+            // InternalEntityGrammar.g:6654:2: ( rule__Class__SuperTypeAssignment_2_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getSuperTypeAssignment_2_1_2_1()); 
             }
-            // InternalEntityGrammar.g:6613:2: ( rule__Class__SuperTypeAssignment_2_1_2_1 )
-            // InternalEntityGrammar.g:6613:3: rule__Class__SuperTypeAssignment_2_1_2_1
+            // InternalEntityGrammar.g:6655:2: ( rule__Class__SuperTypeAssignment_2_1_2_1 )
+            // InternalEntityGrammar.g:6655:3: rule__Class__SuperTypeAssignment_2_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__Class__SuperTypeAssignment_2_1_2_1();
@@ -24728,14 +24933,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1_5__0"
-    // InternalEntityGrammar.g:6622:1: rule__Class__Group_2_1_5__0 : rule__Class__Group_2_1_5__0__Impl rule__Class__Group_2_1_5__1 ;
+    // InternalEntityGrammar.g:6664:1: rule__Class__Group_2_1_5__0 : rule__Class__Group_2_1_5__0__Impl rule__Class__Group_2_1_5__1 ;
     public final void rule__Class__Group_2_1_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6626:1: ( rule__Class__Group_2_1_5__0__Impl rule__Class__Group_2_1_5__1 )
-            // InternalEntityGrammar.g:6627:2: rule__Class__Group_2_1_5__0__Impl rule__Class__Group_2_1_5__1
+            // InternalEntityGrammar.g:6668:1: ( rule__Class__Group_2_1_5__0__Impl rule__Class__Group_2_1_5__1 )
+            // InternalEntityGrammar.g:6669:2: rule__Class__Group_2_1_5__0__Impl rule__Class__Group_2_1_5__1
             {
             pushFollow(FOLLOW_21);
             rule__Class__Group_2_1_5__0__Impl();
@@ -24766,17 +24971,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1_5__0__Impl"
-    // InternalEntityGrammar.g:6634:1: rule__Class__Group_2_1_5__0__Impl : ( 'persistenceUnit' ) ;
+    // InternalEntityGrammar.g:6676:1: rule__Class__Group_2_1_5__0__Impl : ( 'persistenceUnit' ) ;
     public final void rule__Class__Group_2_1_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6638:1: ( ( 'persistenceUnit' ) )
-            // InternalEntityGrammar.g:6639:1: ( 'persistenceUnit' )
+            // InternalEntityGrammar.g:6680:1: ( ( 'persistenceUnit' ) )
+            // InternalEntityGrammar.g:6681:1: ( 'persistenceUnit' )
             {
-            // InternalEntityGrammar.g:6639:1: ( 'persistenceUnit' )
-            // InternalEntityGrammar.g:6640:2: 'persistenceUnit'
+            // InternalEntityGrammar.g:6681:1: ( 'persistenceUnit' )
+            // InternalEntityGrammar.g:6682:2: 'persistenceUnit'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getPersistenceUnitKeyword_2_1_5_0()); 
@@ -24807,14 +25012,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1_5__1"
-    // InternalEntityGrammar.g:6649:1: rule__Class__Group_2_1_5__1 : rule__Class__Group_2_1_5__1__Impl ;
+    // InternalEntityGrammar.g:6691:1: rule__Class__Group_2_1_5__1 : rule__Class__Group_2_1_5__1__Impl ;
     public final void rule__Class__Group_2_1_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6653:1: ( rule__Class__Group_2_1_5__1__Impl )
-            // InternalEntityGrammar.g:6654:2: rule__Class__Group_2_1_5__1__Impl
+            // InternalEntityGrammar.g:6695:1: ( rule__Class__Group_2_1_5__1__Impl )
+            // InternalEntityGrammar.g:6696:2: rule__Class__Group_2_1_5__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Class__Group_2_1_5__1__Impl();
@@ -24840,23 +25045,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_1_5__1__Impl"
-    // InternalEntityGrammar.g:6660:1: rule__Class__Group_2_1_5__1__Impl : ( ( rule__Class__PersistenceUnitAssignment_2_1_5_1 ) ) ;
+    // InternalEntityGrammar.g:6702:1: rule__Class__Group_2_1_5__1__Impl : ( ( rule__Class__PersistenceUnitAssignment_2_1_5_1 ) ) ;
     public final void rule__Class__Group_2_1_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6664:1: ( ( ( rule__Class__PersistenceUnitAssignment_2_1_5_1 ) ) )
-            // InternalEntityGrammar.g:6665:1: ( ( rule__Class__PersistenceUnitAssignment_2_1_5_1 ) )
+            // InternalEntityGrammar.g:6706:1: ( ( ( rule__Class__PersistenceUnitAssignment_2_1_5_1 ) ) )
+            // InternalEntityGrammar.g:6707:1: ( ( rule__Class__PersistenceUnitAssignment_2_1_5_1 ) )
             {
-            // InternalEntityGrammar.g:6665:1: ( ( rule__Class__PersistenceUnitAssignment_2_1_5_1 ) )
-            // InternalEntityGrammar.g:6666:2: ( rule__Class__PersistenceUnitAssignment_2_1_5_1 )
+            // InternalEntityGrammar.g:6707:1: ( ( rule__Class__PersistenceUnitAssignment_2_1_5_1 ) )
+            // InternalEntityGrammar.g:6708:2: ( rule__Class__PersistenceUnitAssignment_2_1_5_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getPersistenceUnitAssignment_2_1_5_1()); 
             }
-            // InternalEntityGrammar.g:6667:2: ( rule__Class__PersistenceUnitAssignment_2_1_5_1 )
-            // InternalEntityGrammar.g:6667:3: rule__Class__PersistenceUnitAssignment_2_1_5_1
+            // InternalEntityGrammar.g:6709:2: ( rule__Class__PersistenceUnitAssignment_2_1_5_1 )
+            // InternalEntityGrammar.g:6709:3: rule__Class__PersistenceUnitAssignment_2_1_5_1
             {
             pushFollow(FOLLOW_2);
             rule__Class__PersistenceUnitAssignment_2_1_5_1();
@@ -24891,14 +25096,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__0"
-    // InternalEntityGrammar.g:6676:1: rule__Class__Group_2_2__0 : rule__Class__Group_2_2__0__Impl rule__Class__Group_2_2__1 ;
+    // InternalEntityGrammar.g:6718:1: rule__Class__Group_2_2__0 : rule__Class__Group_2_2__0__Impl rule__Class__Group_2_2__1 ;
     public final void rule__Class__Group_2_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6680:1: ( rule__Class__Group_2_2__0__Impl rule__Class__Group_2_2__1 )
-            // InternalEntityGrammar.g:6681:2: rule__Class__Group_2_2__0__Impl rule__Class__Group_2_2__1
+            // InternalEntityGrammar.g:6722:1: ( rule__Class__Group_2_2__0__Impl rule__Class__Group_2_2__1 )
+            // InternalEntityGrammar.g:6723:2: rule__Class__Group_2_2__0__Impl rule__Class__Group_2_2__1
             {
             pushFollow(FOLLOW_7);
             rule__Class__Group_2_2__0__Impl();
@@ -24929,23 +25134,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__0__Impl"
-    // InternalEntityGrammar.g:6688:1: rule__Class__Group_2_2__0__Impl : ( () ) ;
+    // InternalEntityGrammar.g:6730:1: rule__Class__Group_2_2__0__Impl : ( () ) ;
     public final void rule__Class__Group_2_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6692:1: ( ( () ) )
-            // InternalEntityGrammar.g:6693:1: ( () )
+            // InternalEntityGrammar.g:6734:1: ( ( () ) )
+            // InternalEntityGrammar.g:6735:1: ( () )
             {
-            // InternalEntityGrammar.g:6693:1: ( () )
-            // InternalEntityGrammar.g:6694:2: ()
+            // InternalEntityGrammar.g:6735:1: ( () )
+            // InternalEntityGrammar.g:6736:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getLBeanAnnotationInfoAction_2_2_0()); 
             }
-            // InternalEntityGrammar.g:6695:2: ()
-            // InternalEntityGrammar.g:6695:3: 
+            // InternalEntityGrammar.g:6737:2: ()
+            // InternalEntityGrammar.g:6737:3: 
             {
             }
 
@@ -24970,14 +25175,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__1"
-    // InternalEntityGrammar.g:6703:1: rule__Class__Group_2_2__1 : rule__Class__Group_2_2__1__Impl rule__Class__Group_2_2__2 ;
+    // InternalEntityGrammar.g:6745:1: rule__Class__Group_2_2__1 : rule__Class__Group_2_2__1__Impl rule__Class__Group_2_2__2 ;
     public final void rule__Class__Group_2_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6707:1: ( rule__Class__Group_2_2__1__Impl rule__Class__Group_2_2__2 )
-            // InternalEntityGrammar.g:6708:2: rule__Class__Group_2_2__1__Impl rule__Class__Group_2_2__2
+            // InternalEntityGrammar.g:6749:1: ( rule__Class__Group_2_2__1__Impl rule__Class__Group_2_2__2 )
+            // InternalEntityGrammar.g:6750:2: rule__Class__Group_2_2__1__Impl rule__Class__Group_2_2__2
             {
             pushFollow(FOLLOW_11);
             rule__Class__Group_2_2__1__Impl();
@@ -25008,17 +25213,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__1__Impl"
-    // InternalEntityGrammar.g:6715:1: rule__Class__Group_2_2__1__Impl : ( 'bean' ) ;
+    // InternalEntityGrammar.g:6757:1: rule__Class__Group_2_2__1__Impl : ( 'bean' ) ;
     public final void rule__Class__Group_2_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6719:1: ( ( 'bean' ) )
-            // InternalEntityGrammar.g:6720:1: ( 'bean' )
+            // InternalEntityGrammar.g:6761:1: ( ( 'bean' ) )
+            // InternalEntityGrammar.g:6762:1: ( 'bean' )
             {
-            // InternalEntityGrammar.g:6720:1: ( 'bean' )
-            // InternalEntityGrammar.g:6721:2: 'bean'
+            // InternalEntityGrammar.g:6762:1: ( 'bean' )
+            // InternalEntityGrammar.g:6763:2: 'bean'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getBeanKeyword_2_2_1()); 
@@ -25049,14 +25254,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__2"
-    // InternalEntityGrammar.g:6730:1: rule__Class__Group_2_2__2 : rule__Class__Group_2_2__2__Impl rule__Class__Group_2_2__3 ;
+    // InternalEntityGrammar.g:6772:1: rule__Class__Group_2_2__2 : rule__Class__Group_2_2__2__Impl rule__Class__Group_2_2__3 ;
     public final void rule__Class__Group_2_2__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6734:1: ( rule__Class__Group_2_2__2__Impl rule__Class__Group_2_2__3 )
-            // InternalEntityGrammar.g:6735:2: rule__Class__Group_2_2__2__Impl rule__Class__Group_2_2__3
+            // InternalEntityGrammar.g:6776:1: ( rule__Class__Group_2_2__2__Impl rule__Class__Group_2_2__3 )
+            // InternalEntityGrammar.g:6777:2: rule__Class__Group_2_2__2__Impl rule__Class__Group_2_2__3
             {
             pushFollow(FOLLOW_12);
             rule__Class__Group_2_2__2__Impl();
@@ -25087,23 +25292,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__2__Impl"
-    // InternalEntityGrammar.g:6742:1: rule__Class__Group_2_2__2__Impl : ( ( rule__Class__NameAssignment_2_2_2 ) ) ;
+    // InternalEntityGrammar.g:6784:1: rule__Class__Group_2_2__2__Impl : ( ( rule__Class__NameAssignment_2_2_2 ) ) ;
     public final void rule__Class__Group_2_2__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6746:1: ( ( ( rule__Class__NameAssignment_2_2_2 ) ) )
-            // InternalEntityGrammar.g:6747:1: ( ( rule__Class__NameAssignment_2_2_2 ) )
+            // InternalEntityGrammar.g:6788:1: ( ( ( rule__Class__NameAssignment_2_2_2 ) ) )
+            // InternalEntityGrammar.g:6789:1: ( ( rule__Class__NameAssignment_2_2_2 ) )
             {
-            // InternalEntityGrammar.g:6747:1: ( ( rule__Class__NameAssignment_2_2_2 ) )
-            // InternalEntityGrammar.g:6748:2: ( rule__Class__NameAssignment_2_2_2 )
+            // InternalEntityGrammar.g:6789:1: ( ( rule__Class__NameAssignment_2_2_2 ) )
+            // InternalEntityGrammar.g:6790:2: ( rule__Class__NameAssignment_2_2_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getNameAssignment_2_2_2()); 
             }
-            // InternalEntityGrammar.g:6749:2: ( rule__Class__NameAssignment_2_2_2 )
-            // InternalEntityGrammar.g:6749:3: rule__Class__NameAssignment_2_2_2
+            // InternalEntityGrammar.g:6791:2: ( rule__Class__NameAssignment_2_2_2 )
+            // InternalEntityGrammar.g:6791:3: rule__Class__NameAssignment_2_2_2
             {
             pushFollow(FOLLOW_2);
             rule__Class__NameAssignment_2_2_2();
@@ -25138,14 +25343,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__3"
-    // InternalEntityGrammar.g:6757:1: rule__Class__Group_2_2__3 : rule__Class__Group_2_2__3__Impl rule__Class__Group_2_2__4 ;
+    // InternalEntityGrammar.g:6799:1: rule__Class__Group_2_2__3 : rule__Class__Group_2_2__3__Impl rule__Class__Group_2_2__4 ;
     public final void rule__Class__Group_2_2__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6761:1: ( rule__Class__Group_2_2__3__Impl rule__Class__Group_2_2__4 )
-            // InternalEntityGrammar.g:6762:2: rule__Class__Group_2_2__3__Impl rule__Class__Group_2_2__4
+            // InternalEntityGrammar.g:6803:1: ( rule__Class__Group_2_2__3__Impl rule__Class__Group_2_2__4 )
+            // InternalEntityGrammar.g:6804:2: rule__Class__Group_2_2__3__Impl rule__Class__Group_2_2__4
             {
             pushFollow(FOLLOW_12);
             rule__Class__Group_2_2__3__Impl();
@@ -25176,31 +25381,31 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__3__Impl"
-    // InternalEntityGrammar.g:6769:1: rule__Class__Group_2_2__3__Impl : ( ( rule__Class__Group_2_2_3__0 )? ) ;
+    // InternalEntityGrammar.g:6811:1: rule__Class__Group_2_2__3__Impl : ( ( rule__Class__Group_2_2_3__0 )? ) ;
     public final void rule__Class__Group_2_2__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6773:1: ( ( ( rule__Class__Group_2_2_3__0 )? ) )
-            // InternalEntityGrammar.g:6774:1: ( ( rule__Class__Group_2_2_3__0 )? )
+            // InternalEntityGrammar.g:6815:1: ( ( ( rule__Class__Group_2_2_3__0 )? ) )
+            // InternalEntityGrammar.g:6816:1: ( ( rule__Class__Group_2_2_3__0 )? )
             {
-            // InternalEntityGrammar.g:6774:1: ( ( rule__Class__Group_2_2_3__0 )? )
-            // InternalEntityGrammar.g:6775:2: ( rule__Class__Group_2_2_3__0 )?
+            // InternalEntityGrammar.g:6816:1: ( ( rule__Class__Group_2_2_3__0 )? )
+            // InternalEntityGrammar.g:6817:2: ( rule__Class__Group_2_2_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getGroup_2_2_3()); 
             }
-            // InternalEntityGrammar.g:6776:2: ( rule__Class__Group_2_2_3__0 )?
-            int alt88=2;
-            int LA88_0 = input.LA(1);
+            // InternalEntityGrammar.g:6818:2: ( rule__Class__Group_2_2_3__0 )?
+            int alt90=2;
+            int LA90_0 = input.LA(1);
 
-            if ( (LA88_0==62) ) {
-                alt88=1;
+            if ( (LA90_0==62) ) {
+                alt90=1;
             }
-            switch (alt88) {
+            switch (alt90) {
                 case 1 :
-                    // InternalEntityGrammar.g:6776:3: rule__Class__Group_2_2_3__0
+                    // InternalEntityGrammar.g:6818:3: rule__Class__Group_2_2_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Class__Group_2_2_3__0();
@@ -25238,14 +25443,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__4"
-    // InternalEntityGrammar.g:6784:1: rule__Class__Group_2_2__4 : rule__Class__Group_2_2__4__Impl rule__Class__Group_2_2__5 ;
+    // InternalEntityGrammar.g:6826:1: rule__Class__Group_2_2__4 : rule__Class__Group_2_2__4__Impl rule__Class__Group_2_2__5 ;
     public final void rule__Class__Group_2_2__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6788:1: ( rule__Class__Group_2_2__4__Impl rule__Class__Group_2_2__5 )
-            // InternalEntityGrammar.g:6789:2: rule__Class__Group_2_2__4__Impl rule__Class__Group_2_2__5
+            // InternalEntityGrammar.g:6830:1: ( rule__Class__Group_2_2__4__Impl rule__Class__Group_2_2__5 )
+            // InternalEntityGrammar.g:6831:2: rule__Class__Group_2_2__4__Impl rule__Class__Group_2_2__5
             {
             pushFollow(FOLLOW_26);
             rule__Class__Group_2_2__4__Impl();
@@ -25276,17 +25481,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__4__Impl"
-    // InternalEntityGrammar.g:6796:1: rule__Class__Group_2_2__4__Impl : ( '{' ) ;
+    // InternalEntityGrammar.g:6838:1: rule__Class__Group_2_2__4__Impl : ( '{' ) ;
     public final void rule__Class__Group_2_2__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6800:1: ( ( '{' ) )
-            // InternalEntityGrammar.g:6801:1: ( '{' )
+            // InternalEntityGrammar.g:6842:1: ( ( '{' ) )
+            // InternalEntityGrammar.g:6843:1: ( '{' )
             {
-            // InternalEntityGrammar.g:6801:1: ( '{' )
-            // InternalEntityGrammar.g:6802:2: '{'
+            // InternalEntityGrammar.g:6843:1: ( '{' )
+            // InternalEntityGrammar.g:6844:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_2_4()); 
@@ -25317,14 +25522,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__5"
-    // InternalEntityGrammar.g:6811:1: rule__Class__Group_2_2__5 : rule__Class__Group_2_2__5__Impl rule__Class__Group_2_2__6 ;
+    // InternalEntityGrammar.g:6853:1: rule__Class__Group_2_2__5 : rule__Class__Group_2_2__5__Impl rule__Class__Group_2_2__6 ;
     public final void rule__Class__Group_2_2__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6815:1: ( rule__Class__Group_2_2__5__Impl rule__Class__Group_2_2__6 )
-            // InternalEntityGrammar.g:6816:2: rule__Class__Group_2_2__5__Impl rule__Class__Group_2_2__6
+            // InternalEntityGrammar.g:6857:1: ( rule__Class__Group_2_2__5__Impl rule__Class__Group_2_2__6 )
+            // InternalEntityGrammar.g:6858:2: rule__Class__Group_2_2__5__Impl rule__Class__Group_2_2__6
             {
             pushFollow(FOLLOW_26);
             rule__Class__Group_2_2__5__Impl();
@@ -25355,35 +25560,35 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__5__Impl"
-    // InternalEntityGrammar.g:6823:1: rule__Class__Group_2_2__5__Impl : ( ( rule__Class__FeaturesAssignment_2_2_5 )* ) ;
+    // InternalEntityGrammar.g:6865:1: rule__Class__Group_2_2__5__Impl : ( ( rule__Class__FeaturesAssignment_2_2_5 )* ) ;
     public final void rule__Class__Group_2_2__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6827:1: ( ( ( rule__Class__FeaturesAssignment_2_2_5 )* ) )
-            // InternalEntityGrammar.g:6828:1: ( ( rule__Class__FeaturesAssignment_2_2_5 )* )
+            // InternalEntityGrammar.g:6869:1: ( ( ( rule__Class__FeaturesAssignment_2_2_5 )* ) )
+            // InternalEntityGrammar.g:6870:1: ( ( rule__Class__FeaturesAssignment_2_2_5 )* )
             {
-            // InternalEntityGrammar.g:6828:1: ( ( rule__Class__FeaturesAssignment_2_2_5 )* )
-            // InternalEntityGrammar.g:6829:2: ( rule__Class__FeaturesAssignment_2_2_5 )*
+            // InternalEntityGrammar.g:6870:1: ( ( rule__Class__FeaturesAssignment_2_2_5 )* )
+            // InternalEntityGrammar.g:6871:2: ( rule__Class__FeaturesAssignment_2_2_5 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getFeaturesAssignment_2_2_5()); 
             }
-            // InternalEntityGrammar.g:6830:2: ( rule__Class__FeaturesAssignment_2_2_5 )*
-            loop89:
+            // InternalEntityGrammar.g:6872:2: ( rule__Class__FeaturesAssignment_2_2_5 )*
+            loop91:
             do {
-                int alt89=2;
-                int LA89_0 = input.LA(1);
+                int alt91=2;
+                int LA91_0 = input.LA(1);
 
-                if ( (LA89_0==16||LA89_0==18||(LA89_0>=20 && LA89_0<=21)||LA89_0==31||LA89_0==103||LA89_0==134) ) {
-                    alt89=1;
+                if ( (LA91_0==16||LA91_0==18||(LA91_0>=20 && LA91_0<=21)||LA91_0==31||LA91_0==103||LA91_0==134) ) {
+                    alt91=1;
                 }
 
 
-                switch (alt89) {
+                switch (alt91) {
             	case 1 :
-            	    // InternalEntityGrammar.g:6830:3: rule__Class__FeaturesAssignment_2_2_5
+            	    // InternalEntityGrammar.g:6872:3: rule__Class__FeaturesAssignment_2_2_5
             	    {
             	    pushFollow(FOLLOW_27);
             	    rule__Class__FeaturesAssignment_2_2_5();
@@ -25395,7 +25600,7 @@
             	    break;
 
             	default :
-            	    break loop89;
+            	    break loop91;
                 }
             } while (true);
 
@@ -25424,14 +25629,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__6"
-    // InternalEntityGrammar.g:6838:1: rule__Class__Group_2_2__6 : rule__Class__Group_2_2__6__Impl ;
+    // InternalEntityGrammar.g:6880:1: rule__Class__Group_2_2__6 : rule__Class__Group_2_2__6__Impl ;
     public final void rule__Class__Group_2_2__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6842:1: ( rule__Class__Group_2_2__6__Impl )
-            // InternalEntityGrammar.g:6843:2: rule__Class__Group_2_2__6__Impl
+            // InternalEntityGrammar.g:6884:1: ( rule__Class__Group_2_2__6__Impl )
+            // InternalEntityGrammar.g:6885:2: rule__Class__Group_2_2__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Class__Group_2_2__6__Impl();
@@ -25457,17 +25662,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2__6__Impl"
-    // InternalEntityGrammar.g:6849:1: rule__Class__Group_2_2__6__Impl : ( '}' ) ;
+    // InternalEntityGrammar.g:6891:1: rule__Class__Group_2_2__6__Impl : ( '}' ) ;
     public final void rule__Class__Group_2_2__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6853:1: ( ( '}' ) )
-            // InternalEntityGrammar.g:6854:1: ( '}' )
+            // InternalEntityGrammar.g:6895:1: ( ( '}' ) )
+            // InternalEntityGrammar.g:6896:1: ( '}' )
             {
-            // InternalEntityGrammar.g:6854:1: ( '}' )
-            // InternalEntityGrammar.g:6855:2: '}'
+            // InternalEntityGrammar.g:6896:1: ( '}' )
+            // InternalEntityGrammar.g:6897:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_2_6()); 
@@ -25498,14 +25703,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2_3__0"
-    // InternalEntityGrammar.g:6865:1: rule__Class__Group_2_2_3__0 : rule__Class__Group_2_2_3__0__Impl rule__Class__Group_2_2_3__1 ;
+    // InternalEntityGrammar.g:6907:1: rule__Class__Group_2_2_3__0 : rule__Class__Group_2_2_3__0__Impl rule__Class__Group_2_2_3__1 ;
     public final void rule__Class__Group_2_2_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6869:1: ( rule__Class__Group_2_2_3__0__Impl rule__Class__Group_2_2_3__1 )
-            // InternalEntityGrammar.g:6870:2: rule__Class__Group_2_2_3__0__Impl rule__Class__Group_2_2_3__1
+            // InternalEntityGrammar.g:6911:1: ( rule__Class__Group_2_2_3__0__Impl rule__Class__Group_2_2_3__1 )
+            // InternalEntityGrammar.g:6912:2: rule__Class__Group_2_2_3__0__Impl rule__Class__Group_2_2_3__1
             {
             pushFollow(FOLLOW_20);
             rule__Class__Group_2_2_3__0__Impl();
@@ -25536,17 +25741,17 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2_3__0__Impl"
-    // InternalEntityGrammar.g:6877:1: rule__Class__Group_2_2_3__0__Impl : ( 'extends' ) ;
+    // InternalEntityGrammar.g:6919:1: rule__Class__Group_2_2_3__0__Impl : ( 'extends' ) ;
     public final void rule__Class__Group_2_2_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6881:1: ( ( 'extends' ) )
-            // InternalEntityGrammar.g:6882:1: ( 'extends' )
+            // InternalEntityGrammar.g:6923:1: ( ( 'extends' ) )
+            // InternalEntityGrammar.g:6924:1: ( 'extends' )
             {
-            // InternalEntityGrammar.g:6882:1: ( 'extends' )
-            // InternalEntityGrammar.g:6883:2: 'extends'
+            // InternalEntityGrammar.g:6924:1: ( 'extends' )
+            // InternalEntityGrammar.g:6925:2: 'extends'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getExtendsKeyword_2_2_3_0()); 
@@ -25577,14 +25782,14 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2_3__1"
-    // InternalEntityGrammar.g:6892:1: rule__Class__Group_2_2_3__1 : rule__Class__Group_2_2_3__1__Impl ;
+    // InternalEntityGrammar.g:6934:1: rule__Class__Group_2_2_3__1 : rule__Class__Group_2_2_3__1__Impl ;
     public final void rule__Class__Group_2_2_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6896:1: ( rule__Class__Group_2_2_3__1__Impl )
-            // InternalEntityGrammar.g:6897:2: rule__Class__Group_2_2_3__1__Impl
+            // InternalEntityGrammar.g:6938:1: ( rule__Class__Group_2_2_3__1__Impl )
+            // InternalEntityGrammar.g:6939:2: rule__Class__Group_2_2_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Class__Group_2_2_3__1__Impl();
@@ -25610,23 +25815,23 @@
 
 
     // $ANTLR start "rule__Class__Group_2_2_3__1__Impl"
-    // InternalEntityGrammar.g:6903:1: rule__Class__Group_2_2_3__1__Impl : ( ( rule__Class__SuperTypeAssignment_2_2_3_1 ) ) ;
+    // InternalEntityGrammar.g:6945:1: rule__Class__Group_2_2_3__1__Impl : ( ( rule__Class__SuperTypeAssignment_2_2_3_1 ) ) ;
     public final void rule__Class__Group_2_2_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6907:1: ( ( ( rule__Class__SuperTypeAssignment_2_2_3_1 ) ) )
-            // InternalEntityGrammar.g:6908:1: ( ( rule__Class__SuperTypeAssignment_2_2_3_1 ) )
+            // InternalEntityGrammar.g:6949:1: ( ( ( rule__Class__SuperTypeAssignment_2_2_3_1 ) ) )
+            // InternalEntityGrammar.g:6950:1: ( ( rule__Class__SuperTypeAssignment_2_2_3_1 ) )
             {
-            // InternalEntityGrammar.g:6908:1: ( ( rule__Class__SuperTypeAssignment_2_2_3_1 ) )
-            // InternalEntityGrammar.g:6909:2: ( rule__Class__SuperTypeAssignment_2_2_3_1 )
+            // InternalEntityGrammar.g:6950:1: ( ( rule__Class__SuperTypeAssignment_2_2_3_1 ) )
+            // InternalEntityGrammar.g:6951:2: ( rule__Class__SuperTypeAssignment_2_2_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassAccess().getSuperTypeAssignment_2_2_3_1()); 
             }
-            // InternalEntityGrammar.g:6910:2: ( rule__Class__SuperTypeAssignment_2_2_3_1 )
-            // InternalEntityGrammar.g:6910:3: rule__Class__SuperTypeAssignment_2_2_3_1
+            // InternalEntityGrammar.g:6952:2: ( rule__Class__SuperTypeAssignment_2_2_3_1 )
+            // InternalEntityGrammar.g:6952:3: rule__Class__SuperTypeAssignment_2_2_3_1
             {
             pushFollow(FOLLOW_2);
             rule__Class__SuperTypeAssignment_2_2_3_1();
@@ -25661,14 +25866,14 @@
 
 
     // $ANTLR start "rule__Index__Group__0"
-    // InternalEntityGrammar.g:6919:1: rule__Index__Group__0 : rule__Index__Group__0__Impl rule__Index__Group__1 ;
+    // InternalEntityGrammar.g:6961:1: rule__Index__Group__0 : rule__Index__Group__0__Impl rule__Index__Group__1 ;
     public final void rule__Index__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6923:1: ( rule__Index__Group__0__Impl rule__Index__Group__1 )
-            // InternalEntityGrammar.g:6924:2: rule__Index__Group__0__Impl rule__Index__Group__1
+            // InternalEntityGrammar.g:6965:1: ( rule__Index__Group__0__Impl rule__Index__Group__1 )
+            // InternalEntityGrammar.g:6966:2: rule__Index__Group__0__Impl rule__Index__Group__1
             {
             pushFollow(FOLLOW_28);
             rule__Index__Group__0__Impl();
@@ -25699,31 +25904,31 @@
 
 
     // $ANTLR start "rule__Index__Group__0__Impl"
-    // InternalEntityGrammar.g:6931:1: rule__Index__Group__0__Impl : ( ( rule__Index__UniqueAssignment_0 )? ) ;
+    // InternalEntityGrammar.g:6973:1: rule__Index__Group__0__Impl : ( ( rule__Index__UniqueAssignment_0 )? ) ;
     public final void rule__Index__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6935:1: ( ( ( rule__Index__UniqueAssignment_0 )? ) )
-            // InternalEntityGrammar.g:6936:1: ( ( rule__Index__UniqueAssignment_0 )? )
+            // InternalEntityGrammar.g:6977:1: ( ( ( rule__Index__UniqueAssignment_0 )? ) )
+            // InternalEntityGrammar.g:6978:1: ( ( rule__Index__UniqueAssignment_0 )? )
             {
-            // InternalEntityGrammar.g:6936:1: ( ( rule__Index__UniqueAssignment_0 )? )
-            // InternalEntityGrammar.g:6937:2: ( rule__Index__UniqueAssignment_0 )?
+            // InternalEntityGrammar.g:6978:1: ( ( rule__Index__UniqueAssignment_0 )? )
+            // InternalEntityGrammar.g:6979:2: ( rule__Index__UniqueAssignment_0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIndexAccess().getUniqueAssignment_0()); 
             }
-            // InternalEntityGrammar.g:6938:2: ( rule__Index__UniqueAssignment_0 )?
-            int alt90=2;
-            int LA90_0 = input.LA(1);
+            // InternalEntityGrammar.g:6980:2: ( rule__Index__UniqueAssignment_0 )?
+            int alt92=2;
+            int LA92_0 = input.LA(1);
 
-            if ( (LA90_0==162) ) {
-                alt90=1;
+            if ( (LA92_0==162) ) {
+                alt92=1;
             }
-            switch (alt90) {
+            switch (alt92) {
                 case 1 :
-                    // InternalEntityGrammar.g:6938:3: rule__Index__UniqueAssignment_0
+                    // InternalEntityGrammar.g:6980:3: rule__Index__UniqueAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Index__UniqueAssignment_0();
@@ -25761,14 +25966,14 @@
 
 
     // $ANTLR start "rule__Index__Group__1"
-    // InternalEntityGrammar.g:6946:1: rule__Index__Group__1 : rule__Index__Group__1__Impl rule__Index__Group__2 ;
+    // InternalEntityGrammar.g:6988:1: rule__Index__Group__1 : rule__Index__Group__1__Impl rule__Index__Group__2 ;
     public final void rule__Index__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6950:1: ( rule__Index__Group__1__Impl rule__Index__Group__2 )
-            // InternalEntityGrammar.g:6951:2: rule__Index__Group__1__Impl rule__Index__Group__2
+            // InternalEntityGrammar.g:6992:1: ( rule__Index__Group__1__Impl rule__Index__Group__2 )
+            // InternalEntityGrammar.g:6993:2: rule__Index__Group__1__Impl rule__Index__Group__2
             {
             pushFollow(FOLLOW_20);
             rule__Index__Group__1__Impl();
@@ -25799,17 +26004,17 @@
 
 
     // $ANTLR start "rule__Index__Group__1__Impl"
-    // InternalEntityGrammar.g:6958:1: rule__Index__Group__1__Impl : ( 'index' ) ;
+    // InternalEntityGrammar.g:7000:1: rule__Index__Group__1__Impl : ( 'index' ) ;
     public final void rule__Index__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6962:1: ( ( 'index' ) )
-            // InternalEntityGrammar.g:6963:1: ( 'index' )
+            // InternalEntityGrammar.g:7004:1: ( ( 'index' ) )
+            // InternalEntityGrammar.g:7005:1: ( 'index' )
             {
-            // InternalEntityGrammar.g:6963:1: ( 'index' )
-            // InternalEntityGrammar.g:6964:2: 'index'
+            // InternalEntityGrammar.g:7005:1: ( 'index' )
+            // InternalEntityGrammar.g:7006:2: 'index'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIndexAccess().getIndexKeyword_1()); 
@@ -25840,14 +26045,14 @@
 
 
     // $ANTLR start "rule__Index__Group__2"
-    // InternalEntityGrammar.g:6973:1: rule__Index__Group__2 : rule__Index__Group__2__Impl rule__Index__Group__3 ;
+    // InternalEntityGrammar.g:7015:1: rule__Index__Group__2 : rule__Index__Group__2__Impl rule__Index__Group__3 ;
     public final void rule__Index__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6977:1: ( rule__Index__Group__2__Impl rule__Index__Group__3 )
-            // InternalEntityGrammar.g:6978:2: rule__Index__Group__2__Impl rule__Index__Group__3
+            // InternalEntityGrammar.g:7019:1: ( rule__Index__Group__2__Impl rule__Index__Group__3 )
+            // InternalEntityGrammar.g:7020:2: rule__Index__Group__2__Impl rule__Index__Group__3
             {
             pushFollow(FOLLOW_24);
             rule__Index__Group__2__Impl();
@@ -25878,23 +26083,23 @@
 
 
     // $ANTLR start "rule__Index__Group__2__Impl"
-    // InternalEntityGrammar.g:6985:1: rule__Index__Group__2__Impl : ( ( rule__Index__NameAssignment_2 ) ) ;
+    // InternalEntityGrammar.g:7027:1: rule__Index__Group__2__Impl : ( ( rule__Index__NameAssignment_2 ) ) ;
     public final void rule__Index__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:6989:1: ( ( ( rule__Index__NameAssignment_2 ) ) )
-            // InternalEntityGrammar.g:6990:1: ( ( rule__Index__NameAssignment_2 ) )
+            // InternalEntityGrammar.g:7031:1: ( ( ( rule__Index__NameAssignment_2 ) ) )
+            // InternalEntityGrammar.g:7032:1: ( ( rule__Index__NameAssignment_2 ) )
             {
-            // InternalEntityGrammar.g:6990:1: ( ( rule__Index__NameAssignment_2 ) )
-            // InternalEntityGrammar.g:6991:2: ( rule__Index__NameAssignment_2 )
+            // InternalEntityGrammar.g:7032:1: ( ( rule__Index__NameAssignment_2 ) )
+            // InternalEntityGrammar.g:7033:2: ( rule__Index__NameAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIndexAccess().getNameAssignment_2()); 
             }
-            // InternalEntityGrammar.g:6992:2: ( rule__Index__NameAssignment_2 )
-            // InternalEntityGrammar.g:6992:3: rule__Index__NameAssignment_2
+            // InternalEntityGrammar.g:7034:2: ( rule__Index__NameAssignment_2 )
+            // InternalEntityGrammar.g:7034:3: rule__Index__NameAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__Index__NameAssignment_2();
@@ -25929,14 +26134,14 @@
 
 
     // $ANTLR start "rule__Index__Group__3"
-    // InternalEntityGrammar.g:7000:1: rule__Index__Group__3 : rule__Index__Group__3__Impl rule__Index__Group__4 ;
+    // InternalEntityGrammar.g:7042:1: rule__Index__Group__3 : rule__Index__Group__3__Impl rule__Index__Group__4 ;
     public final void rule__Index__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7004:1: ( rule__Index__Group__3__Impl rule__Index__Group__4 )
-            // InternalEntityGrammar.g:7005:2: rule__Index__Group__3__Impl rule__Index__Group__4
+            // InternalEntityGrammar.g:7046:1: ( rule__Index__Group__3__Impl rule__Index__Group__4 )
+            // InternalEntityGrammar.g:7047:2: rule__Index__Group__3__Impl rule__Index__Group__4
             {
             pushFollow(FOLLOW_20);
             rule__Index__Group__3__Impl();
@@ -25967,17 +26172,17 @@
 
 
     // $ANTLR start "rule__Index__Group__3__Impl"
-    // InternalEntityGrammar.g:7012:1: rule__Index__Group__3__Impl : ( '{' ) ;
+    // InternalEntityGrammar.g:7054:1: rule__Index__Group__3__Impl : ( '{' ) ;
     public final void rule__Index__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7016:1: ( ( '{' ) )
-            // InternalEntityGrammar.g:7017:1: ( '{' )
+            // InternalEntityGrammar.g:7058:1: ( ( '{' ) )
+            // InternalEntityGrammar.g:7059:1: ( '{' )
             {
-            // InternalEntityGrammar.g:7017:1: ( '{' )
-            // InternalEntityGrammar.g:7018:2: '{'
+            // InternalEntityGrammar.g:7059:1: ( '{' )
+            // InternalEntityGrammar.g:7060:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIndexAccess().getLeftCurlyBracketKeyword_3()); 
@@ -26008,14 +26213,14 @@
 
 
     // $ANTLR start "rule__Index__Group__4"
-    // InternalEntityGrammar.g:7027:1: rule__Index__Group__4 : rule__Index__Group__4__Impl rule__Index__Group__5 ;
+    // InternalEntityGrammar.g:7069:1: rule__Index__Group__4 : rule__Index__Group__4__Impl rule__Index__Group__5 ;
     public final void rule__Index__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7031:1: ( rule__Index__Group__4__Impl rule__Index__Group__5 )
-            // InternalEntityGrammar.g:7032:2: rule__Index__Group__4__Impl rule__Index__Group__5
+            // InternalEntityGrammar.g:7073:1: ( rule__Index__Group__4__Impl rule__Index__Group__5 )
+            // InternalEntityGrammar.g:7074:2: rule__Index__Group__4__Impl rule__Index__Group__5
             {
             pushFollow(FOLLOW_29);
             rule__Index__Group__4__Impl();
@@ -26046,23 +26251,23 @@
 
 
     // $ANTLR start "rule__Index__Group__4__Impl"
-    // InternalEntityGrammar.g:7039:1: rule__Index__Group__4__Impl : ( ( rule__Index__FeaturesAssignment_4 ) ) ;
+    // InternalEntityGrammar.g:7081:1: rule__Index__Group__4__Impl : ( ( rule__Index__FeaturesAssignment_4 ) ) ;
     public final void rule__Index__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7043:1: ( ( ( rule__Index__FeaturesAssignment_4 ) ) )
-            // InternalEntityGrammar.g:7044:1: ( ( rule__Index__FeaturesAssignment_4 ) )
+            // InternalEntityGrammar.g:7085:1: ( ( ( rule__Index__FeaturesAssignment_4 ) ) )
+            // InternalEntityGrammar.g:7086:1: ( ( rule__Index__FeaturesAssignment_4 ) )
             {
-            // InternalEntityGrammar.g:7044:1: ( ( rule__Index__FeaturesAssignment_4 ) )
-            // InternalEntityGrammar.g:7045:2: ( rule__Index__FeaturesAssignment_4 )
+            // InternalEntityGrammar.g:7086:1: ( ( rule__Index__FeaturesAssignment_4 ) )
+            // InternalEntityGrammar.g:7087:2: ( rule__Index__FeaturesAssignment_4 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIndexAccess().getFeaturesAssignment_4()); 
             }
-            // InternalEntityGrammar.g:7046:2: ( rule__Index__FeaturesAssignment_4 )
-            // InternalEntityGrammar.g:7046:3: rule__Index__FeaturesAssignment_4
+            // InternalEntityGrammar.g:7088:2: ( rule__Index__FeaturesAssignment_4 )
+            // InternalEntityGrammar.g:7088:3: rule__Index__FeaturesAssignment_4
             {
             pushFollow(FOLLOW_2);
             rule__Index__FeaturesAssignment_4();
@@ -26097,14 +26302,14 @@
 
 
     // $ANTLR start "rule__Index__Group__5"
-    // InternalEntityGrammar.g:7054:1: rule__Index__Group__5 : rule__Index__Group__5__Impl rule__Index__Group__6 ;
+    // InternalEntityGrammar.g:7096:1: rule__Index__Group__5 : rule__Index__Group__5__Impl rule__Index__Group__6 ;
     public final void rule__Index__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7058:1: ( rule__Index__Group__5__Impl rule__Index__Group__6 )
-            // InternalEntityGrammar.g:7059:2: rule__Index__Group__5__Impl rule__Index__Group__6
+            // InternalEntityGrammar.g:7100:1: ( rule__Index__Group__5__Impl rule__Index__Group__6 )
+            // InternalEntityGrammar.g:7101:2: rule__Index__Group__5__Impl rule__Index__Group__6
             {
             pushFollow(FOLLOW_29);
             rule__Index__Group__5__Impl();
@@ -26135,35 +26340,35 @@
 
 
     // $ANTLR start "rule__Index__Group__5__Impl"
-    // InternalEntityGrammar.g:7066:1: rule__Index__Group__5__Impl : ( ( rule__Index__Group_5__0 )* ) ;
+    // InternalEntityGrammar.g:7108:1: rule__Index__Group__5__Impl : ( ( rule__Index__Group_5__0 )* ) ;
     public final void rule__Index__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7070:1: ( ( ( rule__Index__Group_5__0 )* ) )
-            // InternalEntityGrammar.g:7071:1: ( ( rule__Index__Group_5__0 )* )
+            // InternalEntityGrammar.g:7112:1: ( ( ( rule__Index__Group_5__0 )* ) )
+            // InternalEntityGrammar.g:7113:1: ( ( rule__Index__Group_5__0 )* )
             {
-            // InternalEntityGrammar.g:7071:1: ( ( rule__Index__Group_5__0 )* )
-            // InternalEntityGrammar.g:7072:2: ( rule__Index__Group_5__0 )*
+            // InternalEntityGrammar.g:7113:1: ( ( rule__Index__Group_5__0 )* )
+            // InternalEntityGrammar.g:7114:2: ( rule__Index__Group_5__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIndexAccess().getGroup_5()); 
             }
-            // InternalEntityGrammar.g:7073:2: ( rule__Index__Group_5__0 )*
-            loop91:
+            // InternalEntityGrammar.g:7115:2: ( rule__Index__Group_5__0 )*
+            loop93:
             do {
-                int alt91=2;
-                int LA91_0 = input.LA(1);
+                int alt93=2;
+                int LA93_0 = input.LA(1);
 
-                if ( (LA91_0==95) ) {
-                    alt91=1;
+                if ( (LA93_0==95) ) {
+                    alt93=1;
                 }
 
 
-                switch (alt91) {
+                switch (alt93) {
             	case 1 :
-            	    // InternalEntityGrammar.g:7073:3: rule__Index__Group_5__0
+            	    // InternalEntityGrammar.g:7115:3: rule__Index__Group_5__0
             	    {
             	    pushFollow(FOLLOW_30);
             	    rule__Index__Group_5__0();
@@ -26175,7 +26380,7 @@
             	    break;
 
             	default :
-            	    break loop91;
+            	    break loop93;
                 }
             } while (true);
 
@@ -26204,14 +26409,14 @@
 
 
     // $ANTLR start "rule__Index__Group__6"
-    // InternalEntityGrammar.g:7081:1: rule__Index__Group__6 : rule__Index__Group__6__Impl ;
+    // InternalEntityGrammar.g:7123:1: rule__Index__Group__6 : rule__Index__Group__6__Impl ;
     public final void rule__Index__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7085:1: ( rule__Index__Group__6__Impl )
-            // InternalEntityGrammar.g:7086:2: rule__Index__Group__6__Impl
+            // InternalEntityGrammar.g:7127:1: ( rule__Index__Group__6__Impl )
+            // InternalEntityGrammar.g:7128:2: rule__Index__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Index__Group__6__Impl();
@@ -26237,17 +26442,17 @@
 
 
     // $ANTLR start "rule__Index__Group__6__Impl"
-    // InternalEntityGrammar.g:7092:1: rule__Index__Group__6__Impl : ( '}' ) ;
+    // InternalEntityGrammar.g:7134:1: rule__Index__Group__6__Impl : ( '}' ) ;
     public final void rule__Index__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7096:1: ( ( '}' ) )
-            // InternalEntityGrammar.g:7097:1: ( '}' )
+            // InternalEntityGrammar.g:7138:1: ( ( '}' ) )
+            // InternalEntityGrammar.g:7139:1: ( '}' )
             {
-            // InternalEntityGrammar.g:7097:1: ( '}' )
-            // InternalEntityGrammar.g:7098:2: '}'
+            // InternalEntityGrammar.g:7139:1: ( '}' )
+            // InternalEntityGrammar.g:7140:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIndexAccess().getRightCurlyBracketKeyword_6()); 
@@ -26278,14 +26483,14 @@
 
 
     // $ANTLR start "rule__Index__Group_5__0"
-    // InternalEntityGrammar.g:7108:1: rule__Index__Group_5__0 : rule__Index__Group_5__0__Impl rule__Index__Group_5__1 ;
+    // InternalEntityGrammar.g:7150:1: rule__Index__Group_5__0 : rule__Index__Group_5__0__Impl rule__Index__Group_5__1 ;
     public final void rule__Index__Group_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7112:1: ( rule__Index__Group_5__0__Impl rule__Index__Group_5__1 )
-            // InternalEntityGrammar.g:7113:2: rule__Index__Group_5__0__Impl rule__Index__Group_5__1
+            // InternalEntityGrammar.g:7154:1: ( rule__Index__Group_5__0__Impl rule__Index__Group_5__1 )
+            // InternalEntityGrammar.g:7155:2: rule__Index__Group_5__0__Impl rule__Index__Group_5__1
             {
             pushFollow(FOLLOW_20);
             rule__Index__Group_5__0__Impl();
@@ -26316,17 +26521,17 @@
 
 
     // $ANTLR start "rule__Index__Group_5__0__Impl"
-    // InternalEntityGrammar.g:7120:1: rule__Index__Group_5__0__Impl : ( ',' ) ;
+    // InternalEntityGrammar.g:7162:1: rule__Index__Group_5__0__Impl : ( ',' ) ;
     public final void rule__Index__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7124:1: ( ( ',' ) )
-            // InternalEntityGrammar.g:7125:1: ( ',' )
+            // InternalEntityGrammar.g:7166:1: ( ( ',' ) )
+            // InternalEntityGrammar.g:7167:1: ( ',' )
             {
-            // InternalEntityGrammar.g:7125:1: ( ',' )
-            // InternalEntityGrammar.g:7126:2: ','
+            // InternalEntityGrammar.g:7167:1: ( ',' )
+            // InternalEntityGrammar.g:7168:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIndexAccess().getCommaKeyword_5_0()); 
@@ -26357,14 +26562,14 @@
 
 
     // $ANTLR start "rule__Index__Group_5__1"
-    // InternalEntityGrammar.g:7135:1: rule__Index__Group_5__1 : rule__Index__Group_5__1__Impl ;
+    // InternalEntityGrammar.g:7177:1: rule__Index__Group_5__1 : rule__Index__Group_5__1__Impl ;
     public final void rule__Index__Group_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7139:1: ( rule__Index__Group_5__1__Impl )
-            // InternalEntityGrammar.g:7140:2: rule__Index__Group_5__1__Impl
+            // InternalEntityGrammar.g:7181:1: ( rule__Index__Group_5__1__Impl )
+            // InternalEntityGrammar.g:7182:2: rule__Index__Group_5__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Index__Group_5__1__Impl();
@@ -26390,23 +26595,23 @@
 
 
     // $ANTLR start "rule__Index__Group_5__1__Impl"
-    // InternalEntityGrammar.g:7146:1: rule__Index__Group_5__1__Impl : ( ( rule__Index__FeaturesAssignment_5_1 ) ) ;
+    // InternalEntityGrammar.g:7188:1: rule__Index__Group_5__1__Impl : ( ( rule__Index__FeaturesAssignment_5_1 ) ) ;
     public final void rule__Index__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7150:1: ( ( ( rule__Index__FeaturesAssignment_5_1 ) ) )
-            // InternalEntityGrammar.g:7151:1: ( ( rule__Index__FeaturesAssignment_5_1 ) )
+            // InternalEntityGrammar.g:7192:1: ( ( ( rule__Index__FeaturesAssignment_5_1 ) ) )
+            // InternalEntityGrammar.g:7193:1: ( ( rule__Index__FeaturesAssignment_5_1 ) )
             {
-            // InternalEntityGrammar.g:7151:1: ( ( rule__Index__FeaturesAssignment_5_1 ) )
-            // InternalEntityGrammar.g:7152:2: ( rule__Index__FeaturesAssignment_5_1 )
+            // InternalEntityGrammar.g:7193:1: ( ( rule__Index__FeaturesAssignment_5_1 ) )
+            // InternalEntityGrammar.g:7194:2: ( rule__Index__FeaturesAssignment_5_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIndexAccess().getFeaturesAssignment_5_1()); 
             }
-            // InternalEntityGrammar.g:7153:2: ( rule__Index__FeaturesAssignment_5_1 )
-            // InternalEntityGrammar.g:7153:3: rule__Index__FeaturesAssignment_5_1
+            // InternalEntityGrammar.g:7195:2: ( rule__Index__FeaturesAssignment_5_1 )
+            // InternalEntityGrammar.g:7195:3: rule__Index__FeaturesAssignment_5_1
             {
             pushFollow(FOLLOW_2);
             rule__Index__FeaturesAssignment_5_1();
@@ -26441,14 +26646,14 @@
 
 
     // $ANTLR start "rule__EntityPersistenceInfo__Group__0"
-    // InternalEntityGrammar.g:7162:1: rule__EntityPersistenceInfo__Group__0 : rule__EntityPersistenceInfo__Group__0__Impl rule__EntityPersistenceInfo__Group__1 ;
+    // InternalEntityGrammar.g:7204:1: rule__EntityPersistenceInfo__Group__0 : rule__EntityPersistenceInfo__Group__0__Impl rule__EntityPersistenceInfo__Group__1 ;
     public final void rule__EntityPersistenceInfo__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7166:1: ( rule__EntityPersistenceInfo__Group__0__Impl rule__EntityPersistenceInfo__Group__1 )
-            // InternalEntityGrammar.g:7167:2: rule__EntityPersistenceInfo__Group__0__Impl rule__EntityPersistenceInfo__Group__1
+            // InternalEntityGrammar.g:7208:1: ( rule__EntityPersistenceInfo__Group__0__Impl rule__EntityPersistenceInfo__Group__1 )
+            // InternalEntityGrammar.g:7209:2: rule__EntityPersistenceInfo__Group__0__Impl rule__EntityPersistenceInfo__Group__1
             {
             pushFollow(FOLLOW_13);
             rule__EntityPersistenceInfo__Group__0__Impl();
@@ -26479,23 +26684,23 @@
 
 
     // $ANTLR start "rule__EntityPersistenceInfo__Group__0__Impl"
-    // InternalEntityGrammar.g:7174:1: rule__EntityPersistenceInfo__Group__0__Impl : ( () ) ;
+    // InternalEntityGrammar.g:7216:1: rule__EntityPersistenceInfo__Group__0__Impl : ( () ) ;
     public final void rule__EntityPersistenceInfo__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7178:1: ( ( () ) )
-            // InternalEntityGrammar.g:7179:1: ( () )
+            // InternalEntityGrammar.g:7220:1: ( ( () ) )
+            // InternalEntityGrammar.g:7221:1: ( () )
             {
-            // InternalEntityGrammar.g:7179:1: ( () )
-            // InternalEntityGrammar.g:7180:2: ()
+            // InternalEntityGrammar.g:7221:1: ( () )
+            // InternalEntityGrammar.g:7222:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityPersistenceInfoAccess().getLEntityPersistenceInfoAction_0()); 
             }
-            // InternalEntityGrammar.g:7181:2: ()
-            // InternalEntityGrammar.g:7181:3: 
+            // InternalEntityGrammar.g:7223:2: ()
+            // InternalEntityGrammar.g:7223:3: 
             {
             }
 
@@ -26520,14 +26725,14 @@
 
 
     // $ANTLR start "rule__EntityPersistenceInfo__Group__1"
-    // InternalEntityGrammar.g:7189:1: rule__EntityPersistenceInfo__Group__1 : rule__EntityPersistenceInfo__Group__1__Impl ;
+    // InternalEntityGrammar.g:7231:1: rule__EntityPersistenceInfo__Group__1 : rule__EntityPersistenceInfo__Group__1__Impl ;
     public final void rule__EntityPersistenceInfo__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7193:1: ( rule__EntityPersistenceInfo__Group__1__Impl )
-            // InternalEntityGrammar.g:7194:2: rule__EntityPersistenceInfo__Group__1__Impl
+            // InternalEntityGrammar.g:7235:1: ( rule__EntityPersistenceInfo__Group__1__Impl )
+            // InternalEntityGrammar.g:7236:2: rule__EntityPersistenceInfo__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityPersistenceInfo__Group__1__Impl();
@@ -26553,23 +26758,23 @@
 
 
     // $ANTLR start "rule__EntityPersistenceInfo__Group__1__Impl"
-    // InternalEntityGrammar.g:7200:1: rule__EntityPersistenceInfo__Group__1__Impl : ( ( rule__EntityPersistenceInfo__UnorderedGroup_1 ) ) ;
+    // InternalEntityGrammar.g:7242:1: rule__EntityPersistenceInfo__Group__1__Impl : ( ( rule__EntityPersistenceInfo__UnorderedGroup_1 ) ) ;
     public final void rule__EntityPersistenceInfo__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7204:1: ( ( ( rule__EntityPersistenceInfo__UnorderedGroup_1 ) ) )
-            // InternalEntityGrammar.g:7205:1: ( ( rule__EntityPersistenceInfo__UnorderedGroup_1 ) )
+            // InternalEntityGrammar.g:7246:1: ( ( ( rule__EntityPersistenceInfo__UnorderedGroup_1 ) ) )
+            // InternalEntityGrammar.g:7247:1: ( ( rule__EntityPersistenceInfo__UnorderedGroup_1 ) )
             {
-            // InternalEntityGrammar.g:7205:1: ( ( rule__EntityPersistenceInfo__UnorderedGroup_1 ) )
-            // InternalEntityGrammar.g:7206:2: ( rule__EntityPersistenceInfo__UnorderedGroup_1 )
+            // InternalEntityGrammar.g:7247:1: ( ( rule__EntityPersistenceInfo__UnorderedGroup_1 ) )
+            // InternalEntityGrammar.g:7248:2: ( rule__EntityPersistenceInfo__UnorderedGroup_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1()); 
             }
-            // InternalEntityGrammar.g:7207:2: ( rule__EntityPersistenceInfo__UnorderedGroup_1 )
-            // InternalEntityGrammar.g:7207:3: rule__EntityPersistenceInfo__UnorderedGroup_1
+            // InternalEntityGrammar.g:7249:2: ( rule__EntityPersistenceInfo__UnorderedGroup_1 )
+            // InternalEntityGrammar.g:7249:3: rule__EntityPersistenceInfo__UnorderedGroup_1
             {
             pushFollow(FOLLOW_2);
             rule__EntityPersistenceInfo__UnorderedGroup_1();
@@ -26604,14 +26809,14 @@
 
 
     // $ANTLR start "rule__EntityPersistenceInfo__Group_1_0__0"
-    // InternalEntityGrammar.g:7216:1: rule__EntityPersistenceInfo__Group_1_0__0 : rule__EntityPersistenceInfo__Group_1_0__0__Impl rule__EntityPersistenceInfo__Group_1_0__1 ;
+    // InternalEntityGrammar.g:7258:1: rule__EntityPersistenceInfo__Group_1_0__0 : rule__EntityPersistenceInfo__Group_1_0__0__Impl rule__EntityPersistenceInfo__Group_1_0__1 ;
     public final void rule__EntityPersistenceInfo__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7220:1: ( rule__EntityPersistenceInfo__Group_1_0__0__Impl rule__EntityPersistenceInfo__Group_1_0__1 )
-            // InternalEntityGrammar.g:7221:2: rule__EntityPersistenceInfo__Group_1_0__0__Impl rule__EntityPersistenceInfo__Group_1_0__1
+            // InternalEntityGrammar.g:7262:1: ( rule__EntityPersistenceInfo__Group_1_0__0__Impl rule__EntityPersistenceInfo__Group_1_0__1 )
+            // InternalEntityGrammar.g:7263:2: rule__EntityPersistenceInfo__Group_1_0__0__Impl rule__EntityPersistenceInfo__Group_1_0__1
             {
             pushFollow(FOLLOW_11);
             rule__EntityPersistenceInfo__Group_1_0__0__Impl();
@@ -26642,17 +26847,17 @@
 
 
     // $ANTLR start "rule__EntityPersistenceInfo__Group_1_0__0__Impl"
-    // InternalEntityGrammar.g:7228:1: rule__EntityPersistenceInfo__Group_1_0__0__Impl : ( 'schemaName' ) ;
+    // InternalEntityGrammar.g:7270:1: rule__EntityPersistenceInfo__Group_1_0__0__Impl : ( 'schemaName' ) ;
     public final void rule__EntityPersistenceInfo__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7232:1: ( ( 'schemaName' ) )
-            // InternalEntityGrammar.g:7233:1: ( 'schemaName' )
+            // InternalEntityGrammar.g:7274:1: ( ( 'schemaName' ) )
+            // InternalEntityGrammar.g:7275:1: ( 'schemaName' )
             {
-            // InternalEntityGrammar.g:7233:1: ( 'schemaName' )
-            // InternalEntityGrammar.g:7234:2: 'schemaName'
+            // InternalEntityGrammar.g:7275:1: ( 'schemaName' )
+            // InternalEntityGrammar.g:7276:2: 'schemaName'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityPersistenceInfoAccess().getSchemaNameKeyword_1_0_0()); 
@@ -26683,14 +26888,14 @@
 
 
     // $ANTLR start "rule__EntityPersistenceInfo__Group_1_0__1"
-    // InternalEntityGrammar.g:7243:1: rule__EntityPersistenceInfo__Group_1_0__1 : rule__EntityPersistenceInfo__Group_1_0__1__Impl ;
+    // InternalEntityGrammar.g:7285:1: rule__EntityPersistenceInfo__Group_1_0__1 : rule__EntityPersistenceInfo__Group_1_0__1__Impl ;
     public final void rule__EntityPersistenceInfo__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7247:1: ( rule__EntityPersistenceInfo__Group_1_0__1__Impl )
-            // InternalEntityGrammar.g:7248:2: rule__EntityPersistenceInfo__Group_1_0__1__Impl
+            // InternalEntityGrammar.g:7289:1: ( rule__EntityPersistenceInfo__Group_1_0__1__Impl )
+            // InternalEntityGrammar.g:7290:2: rule__EntityPersistenceInfo__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityPersistenceInfo__Group_1_0__1__Impl();
@@ -26716,23 +26921,23 @@
 
 
     // $ANTLR start "rule__EntityPersistenceInfo__Group_1_0__1__Impl"
-    // InternalEntityGrammar.g:7254:1: rule__EntityPersistenceInfo__Group_1_0__1__Impl : ( ( rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1 ) ) ;
+    // InternalEntityGrammar.g:7296:1: rule__EntityPersistenceInfo__Group_1_0__1__Impl : ( ( rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1 ) ) ;
     public final void rule__EntityPersistenceInfo__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7258:1: ( ( ( rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1 ) ) )
-            // InternalEntityGrammar.g:7259:1: ( ( rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1 ) )
+            // InternalEntityGrammar.g:7300:1: ( ( ( rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1 ) ) )
+            // InternalEntityGrammar.g:7301:1: ( ( rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1 ) )
             {
-            // InternalEntityGrammar.g:7259:1: ( ( rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1 ) )
-            // InternalEntityGrammar.g:7260:2: ( rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1 )
+            // InternalEntityGrammar.g:7301:1: ( ( rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1 ) )
+            // InternalEntityGrammar.g:7302:2: ( rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityPersistenceInfoAccess().getSchemaNameAssignment_1_0_1()); 
             }
-            // InternalEntityGrammar.g:7261:2: ( rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1 )
-            // InternalEntityGrammar.g:7261:3: rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1
+            // InternalEntityGrammar.g:7303:2: ( rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1 )
+            // InternalEntityGrammar.g:7303:3: rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1();
@@ -26767,14 +26972,14 @@
 
 
     // $ANTLR start "rule__EntityPersistenceInfo__Group_1_1__0"
-    // InternalEntityGrammar.g:7270:1: rule__EntityPersistenceInfo__Group_1_1__0 : rule__EntityPersistenceInfo__Group_1_1__0__Impl rule__EntityPersistenceInfo__Group_1_1__1 ;
+    // InternalEntityGrammar.g:7312:1: rule__EntityPersistenceInfo__Group_1_1__0 : rule__EntityPersistenceInfo__Group_1_1__0__Impl rule__EntityPersistenceInfo__Group_1_1__1 ;
     public final void rule__EntityPersistenceInfo__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7274:1: ( rule__EntityPersistenceInfo__Group_1_1__0__Impl rule__EntityPersistenceInfo__Group_1_1__1 )
-            // InternalEntityGrammar.g:7275:2: rule__EntityPersistenceInfo__Group_1_1__0__Impl rule__EntityPersistenceInfo__Group_1_1__1
+            // InternalEntityGrammar.g:7316:1: ( rule__EntityPersistenceInfo__Group_1_1__0__Impl rule__EntityPersistenceInfo__Group_1_1__1 )
+            // InternalEntityGrammar.g:7317:2: rule__EntityPersistenceInfo__Group_1_1__0__Impl rule__EntityPersistenceInfo__Group_1_1__1
             {
             pushFollow(FOLLOW_11);
             rule__EntityPersistenceInfo__Group_1_1__0__Impl();
@@ -26805,17 +27010,17 @@
 
 
     // $ANTLR start "rule__EntityPersistenceInfo__Group_1_1__0__Impl"
-    // InternalEntityGrammar.g:7282:1: rule__EntityPersistenceInfo__Group_1_1__0__Impl : ( 'tableName' ) ;
+    // InternalEntityGrammar.g:7324:1: rule__EntityPersistenceInfo__Group_1_1__0__Impl : ( 'tableName' ) ;
     public final void rule__EntityPersistenceInfo__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7286:1: ( ( 'tableName' ) )
-            // InternalEntityGrammar.g:7287:1: ( 'tableName' )
+            // InternalEntityGrammar.g:7328:1: ( ( 'tableName' ) )
+            // InternalEntityGrammar.g:7329:1: ( 'tableName' )
             {
-            // InternalEntityGrammar.g:7287:1: ( 'tableName' )
-            // InternalEntityGrammar.g:7288:2: 'tableName'
+            // InternalEntityGrammar.g:7329:1: ( 'tableName' )
+            // InternalEntityGrammar.g:7330:2: 'tableName'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityPersistenceInfoAccess().getTableNameKeyword_1_1_0()); 
@@ -26846,14 +27051,14 @@
 
 
     // $ANTLR start "rule__EntityPersistenceInfo__Group_1_1__1"
-    // InternalEntityGrammar.g:7297:1: rule__EntityPersistenceInfo__Group_1_1__1 : rule__EntityPersistenceInfo__Group_1_1__1__Impl ;
+    // InternalEntityGrammar.g:7339:1: rule__EntityPersistenceInfo__Group_1_1__1 : rule__EntityPersistenceInfo__Group_1_1__1__Impl ;
     public final void rule__EntityPersistenceInfo__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7301:1: ( rule__EntityPersistenceInfo__Group_1_1__1__Impl )
-            // InternalEntityGrammar.g:7302:2: rule__EntityPersistenceInfo__Group_1_1__1__Impl
+            // InternalEntityGrammar.g:7343:1: ( rule__EntityPersistenceInfo__Group_1_1__1__Impl )
+            // InternalEntityGrammar.g:7344:2: rule__EntityPersistenceInfo__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityPersistenceInfo__Group_1_1__1__Impl();
@@ -26879,23 +27084,23 @@
 
 
     // $ANTLR start "rule__EntityPersistenceInfo__Group_1_1__1__Impl"
-    // InternalEntityGrammar.g:7308:1: rule__EntityPersistenceInfo__Group_1_1__1__Impl : ( ( rule__EntityPersistenceInfo__TableNameAssignment_1_1_1 ) ) ;
+    // InternalEntityGrammar.g:7350:1: rule__EntityPersistenceInfo__Group_1_1__1__Impl : ( ( rule__EntityPersistenceInfo__TableNameAssignment_1_1_1 ) ) ;
     public final void rule__EntityPersistenceInfo__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7312:1: ( ( ( rule__EntityPersistenceInfo__TableNameAssignment_1_1_1 ) ) )
-            // InternalEntityGrammar.g:7313:1: ( ( rule__EntityPersistenceInfo__TableNameAssignment_1_1_1 ) )
+            // InternalEntityGrammar.g:7354:1: ( ( ( rule__EntityPersistenceInfo__TableNameAssignment_1_1_1 ) ) )
+            // InternalEntityGrammar.g:7355:1: ( ( rule__EntityPersistenceInfo__TableNameAssignment_1_1_1 ) )
             {
-            // InternalEntityGrammar.g:7313:1: ( ( rule__EntityPersistenceInfo__TableNameAssignment_1_1_1 ) )
-            // InternalEntityGrammar.g:7314:2: ( rule__EntityPersistenceInfo__TableNameAssignment_1_1_1 )
+            // InternalEntityGrammar.g:7355:1: ( ( rule__EntityPersistenceInfo__TableNameAssignment_1_1_1 ) )
+            // InternalEntityGrammar.g:7356:2: ( rule__EntityPersistenceInfo__TableNameAssignment_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityPersistenceInfoAccess().getTableNameAssignment_1_1_1()); 
             }
-            // InternalEntityGrammar.g:7315:2: ( rule__EntityPersistenceInfo__TableNameAssignment_1_1_1 )
-            // InternalEntityGrammar.g:7315:3: rule__EntityPersistenceInfo__TableNameAssignment_1_1_1
+            // InternalEntityGrammar.g:7357:2: ( rule__EntityPersistenceInfo__TableNameAssignment_1_1_1 )
+            // InternalEntityGrammar.g:7357:3: rule__EntityPersistenceInfo__TableNameAssignment_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__EntityPersistenceInfo__TableNameAssignment_1_1_1();
@@ -26930,14 +27135,14 @@
 
 
     // $ANTLR start "rule__ColumnPersistenceInfo__Group__0"
-    // InternalEntityGrammar.g:7324:1: rule__ColumnPersistenceInfo__Group__0 : rule__ColumnPersistenceInfo__Group__0__Impl rule__ColumnPersistenceInfo__Group__1 ;
+    // InternalEntityGrammar.g:7366:1: rule__ColumnPersistenceInfo__Group__0 : rule__ColumnPersistenceInfo__Group__0__Impl rule__ColumnPersistenceInfo__Group__1 ;
     public final void rule__ColumnPersistenceInfo__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7328:1: ( rule__ColumnPersistenceInfo__Group__0__Impl rule__ColumnPersistenceInfo__Group__1 )
-            // InternalEntityGrammar.g:7329:2: rule__ColumnPersistenceInfo__Group__0__Impl rule__ColumnPersistenceInfo__Group__1
+            // InternalEntityGrammar.g:7370:1: ( rule__ColumnPersistenceInfo__Group__0__Impl rule__ColumnPersistenceInfo__Group__1 )
+            // InternalEntityGrammar.g:7371:2: rule__ColumnPersistenceInfo__Group__0__Impl rule__ColumnPersistenceInfo__Group__1
             {
             pushFollow(FOLLOW_17);
             rule__ColumnPersistenceInfo__Group__0__Impl();
@@ -26968,23 +27173,23 @@
 
 
     // $ANTLR start "rule__ColumnPersistenceInfo__Group__0__Impl"
-    // InternalEntityGrammar.g:7336:1: rule__ColumnPersistenceInfo__Group__0__Impl : ( () ) ;
+    // InternalEntityGrammar.g:7378:1: rule__ColumnPersistenceInfo__Group__0__Impl : ( () ) ;
     public final void rule__ColumnPersistenceInfo__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7340:1: ( ( () ) )
-            // InternalEntityGrammar.g:7341:1: ( () )
+            // InternalEntityGrammar.g:7382:1: ( ( () ) )
+            // InternalEntityGrammar.g:7383:1: ( () )
             {
-            // InternalEntityGrammar.g:7341:1: ( () )
-            // InternalEntityGrammar.g:7342:2: ()
+            // InternalEntityGrammar.g:7383:1: ( () )
+            // InternalEntityGrammar.g:7384:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getColumnPersistenceInfoAccess().getLEntityColumnPersistenceInfoAction_0()); 
             }
-            // InternalEntityGrammar.g:7343:2: ()
-            // InternalEntityGrammar.g:7343:3: 
+            // InternalEntityGrammar.g:7385:2: ()
+            // InternalEntityGrammar.g:7385:3: 
             {
             }
 
@@ -27009,14 +27214,14 @@
 
 
     // $ANTLR start "rule__ColumnPersistenceInfo__Group__1"
-    // InternalEntityGrammar.g:7351:1: rule__ColumnPersistenceInfo__Group__1 : rule__ColumnPersistenceInfo__Group__1__Impl rule__ColumnPersistenceInfo__Group__2 ;
+    // InternalEntityGrammar.g:7393:1: rule__ColumnPersistenceInfo__Group__1 : rule__ColumnPersistenceInfo__Group__1__Impl rule__ColumnPersistenceInfo__Group__2 ;
     public final void rule__ColumnPersistenceInfo__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7355:1: ( rule__ColumnPersistenceInfo__Group__1__Impl rule__ColumnPersistenceInfo__Group__2 )
-            // InternalEntityGrammar.g:7356:2: rule__ColumnPersistenceInfo__Group__1__Impl rule__ColumnPersistenceInfo__Group__2
+            // InternalEntityGrammar.g:7397:1: ( rule__ColumnPersistenceInfo__Group__1__Impl rule__ColumnPersistenceInfo__Group__2 )
+            // InternalEntityGrammar.g:7398:2: rule__ColumnPersistenceInfo__Group__1__Impl rule__ColumnPersistenceInfo__Group__2
             {
             pushFollow(FOLLOW_11);
             rule__ColumnPersistenceInfo__Group__1__Impl();
@@ -27047,17 +27252,17 @@
 
 
     // $ANTLR start "rule__ColumnPersistenceInfo__Group__1__Impl"
-    // InternalEntityGrammar.g:7363:1: rule__ColumnPersistenceInfo__Group__1__Impl : ( '(' ) ;
+    // InternalEntityGrammar.g:7405:1: rule__ColumnPersistenceInfo__Group__1__Impl : ( '(' ) ;
     public final void rule__ColumnPersistenceInfo__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7367:1: ( ( '(' ) )
-            // InternalEntityGrammar.g:7368:1: ( '(' )
+            // InternalEntityGrammar.g:7409:1: ( ( '(' ) )
+            // InternalEntityGrammar.g:7410:1: ( '(' )
             {
-            // InternalEntityGrammar.g:7368:1: ( '(' )
-            // InternalEntityGrammar.g:7369:2: '('
+            // InternalEntityGrammar.g:7410:1: ( '(' )
+            // InternalEntityGrammar.g:7411:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getColumnPersistenceInfoAccess().getLeftParenthesisKeyword_1()); 
@@ -27088,14 +27293,14 @@
 
 
     // $ANTLR start "rule__ColumnPersistenceInfo__Group__2"
-    // InternalEntityGrammar.g:7378:1: rule__ColumnPersistenceInfo__Group__2 : rule__ColumnPersistenceInfo__Group__2__Impl rule__ColumnPersistenceInfo__Group__3 ;
+    // InternalEntityGrammar.g:7420:1: rule__ColumnPersistenceInfo__Group__2 : rule__ColumnPersistenceInfo__Group__2__Impl rule__ColumnPersistenceInfo__Group__3 ;
     public final void rule__ColumnPersistenceInfo__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7382:1: ( rule__ColumnPersistenceInfo__Group__2__Impl rule__ColumnPersistenceInfo__Group__3 )
-            // InternalEntityGrammar.g:7383:2: rule__ColumnPersistenceInfo__Group__2__Impl rule__ColumnPersistenceInfo__Group__3
+            // InternalEntityGrammar.g:7424:1: ( rule__ColumnPersistenceInfo__Group__2__Impl rule__ColumnPersistenceInfo__Group__3 )
+            // InternalEntityGrammar.g:7425:2: rule__ColumnPersistenceInfo__Group__2__Impl rule__ColumnPersistenceInfo__Group__3
             {
             pushFollow(FOLLOW_19);
             rule__ColumnPersistenceInfo__Group__2__Impl();
@@ -27126,23 +27331,23 @@
 
 
     // $ANTLR start "rule__ColumnPersistenceInfo__Group__2__Impl"
-    // InternalEntityGrammar.g:7390:1: rule__ColumnPersistenceInfo__Group__2__Impl : ( ( rule__ColumnPersistenceInfo__ColumnNameAssignment_2 ) ) ;
+    // InternalEntityGrammar.g:7432:1: rule__ColumnPersistenceInfo__Group__2__Impl : ( ( rule__ColumnPersistenceInfo__ColumnNameAssignment_2 ) ) ;
     public final void rule__ColumnPersistenceInfo__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7394:1: ( ( ( rule__ColumnPersistenceInfo__ColumnNameAssignment_2 ) ) )
-            // InternalEntityGrammar.g:7395:1: ( ( rule__ColumnPersistenceInfo__ColumnNameAssignment_2 ) )
+            // InternalEntityGrammar.g:7436:1: ( ( ( rule__ColumnPersistenceInfo__ColumnNameAssignment_2 ) ) )
+            // InternalEntityGrammar.g:7437:1: ( ( rule__ColumnPersistenceInfo__ColumnNameAssignment_2 ) )
             {
-            // InternalEntityGrammar.g:7395:1: ( ( rule__ColumnPersistenceInfo__ColumnNameAssignment_2 ) )
-            // InternalEntityGrammar.g:7396:2: ( rule__ColumnPersistenceInfo__ColumnNameAssignment_2 )
+            // InternalEntityGrammar.g:7437:1: ( ( rule__ColumnPersistenceInfo__ColumnNameAssignment_2 ) )
+            // InternalEntityGrammar.g:7438:2: ( rule__ColumnPersistenceInfo__ColumnNameAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getColumnPersistenceInfoAccess().getColumnNameAssignment_2()); 
             }
-            // InternalEntityGrammar.g:7397:2: ( rule__ColumnPersistenceInfo__ColumnNameAssignment_2 )
-            // InternalEntityGrammar.g:7397:3: rule__ColumnPersistenceInfo__ColumnNameAssignment_2
+            // InternalEntityGrammar.g:7439:2: ( rule__ColumnPersistenceInfo__ColumnNameAssignment_2 )
+            // InternalEntityGrammar.g:7439:3: rule__ColumnPersistenceInfo__ColumnNameAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__ColumnPersistenceInfo__ColumnNameAssignment_2();
@@ -27177,14 +27382,14 @@
 
 
     // $ANTLR start "rule__ColumnPersistenceInfo__Group__3"
-    // InternalEntityGrammar.g:7405:1: rule__ColumnPersistenceInfo__Group__3 : rule__ColumnPersistenceInfo__Group__3__Impl ;
+    // InternalEntityGrammar.g:7447:1: rule__ColumnPersistenceInfo__Group__3 : rule__ColumnPersistenceInfo__Group__3__Impl ;
     public final void rule__ColumnPersistenceInfo__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7409:1: ( rule__ColumnPersistenceInfo__Group__3__Impl )
-            // InternalEntityGrammar.g:7410:2: rule__ColumnPersistenceInfo__Group__3__Impl
+            // InternalEntityGrammar.g:7451:1: ( rule__ColumnPersistenceInfo__Group__3__Impl )
+            // InternalEntityGrammar.g:7452:2: rule__ColumnPersistenceInfo__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ColumnPersistenceInfo__Group__3__Impl();
@@ -27210,17 +27415,17 @@
 
 
     // $ANTLR start "rule__ColumnPersistenceInfo__Group__3__Impl"
-    // InternalEntityGrammar.g:7416:1: rule__ColumnPersistenceInfo__Group__3__Impl : ( ')' ) ;
+    // InternalEntityGrammar.g:7458:1: rule__ColumnPersistenceInfo__Group__3__Impl : ( ')' ) ;
     public final void rule__ColumnPersistenceInfo__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7420:1: ( ( ')' ) )
-            // InternalEntityGrammar.g:7421:1: ( ')' )
+            // InternalEntityGrammar.g:7462:1: ( ( ')' ) )
+            // InternalEntityGrammar.g:7463:1: ( ')' )
             {
-            // InternalEntityGrammar.g:7421:1: ( ')' )
-            // InternalEntityGrammar.g:7422:2: ')'
+            // InternalEntityGrammar.g:7463:1: ( ')' )
+            // InternalEntityGrammar.g:7464:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getColumnPersistenceInfoAccess().getRightParenthesisKeyword_3()); 
@@ -27251,14 +27456,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group__0"
-    // InternalEntityGrammar.g:7432:1: rule__EntityFeature__Group__0 : rule__EntityFeature__Group__0__Impl rule__EntityFeature__Group__1 ;
+    // InternalEntityGrammar.g:7474:1: rule__EntityFeature__Group__0 : rule__EntityFeature__Group__0__Impl rule__EntityFeature__Group__1 ;
     public final void rule__EntityFeature__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7436:1: ( rule__EntityFeature__Group__0__Impl rule__EntityFeature__Group__1 )
-            // InternalEntityGrammar.g:7437:2: rule__EntityFeature__Group__0__Impl rule__EntityFeature__Group__1
+            // InternalEntityGrammar.g:7478:1: ( rule__EntityFeature__Group__0__Impl rule__EntityFeature__Group__1 )
+            // InternalEntityGrammar.g:7479:2: rule__EntityFeature__Group__0__Impl rule__EntityFeature__Group__1
             {
             pushFollow(FOLLOW_31);
             rule__EntityFeature__Group__0__Impl();
@@ -27289,23 +27494,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group__0__Impl"
-    // InternalEntityGrammar.g:7444:1: rule__EntityFeature__Group__0__Impl : ( () ) ;
+    // InternalEntityGrammar.g:7486:1: rule__EntityFeature__Group__0__Impl : ( () ) ;
     public final void rule__EntityFeature__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7448:1: ( ( () ) )
-            // InternalEntityGrammar.g:7449:1: ( () )
+            // InternalEntityGrammar.g:7490:1: ( ( () ) )
+            // InternalEntityGrammar.g:7491:1: ( () )
             {
-            // InternalEntityGrammar.g:7449:1: ( () )
-            // InternalEntityGrammar.g:7450:2: ()
+            // InternalEntityGrammar.g:7491:1: ( () )
+            // InternalEntityGrammar.g:7492:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getLEntityFeatureAction_0()); 
             }
-            // InternalEntityGrammar.g:7451:2: ()
-            // InternalEntityGrammar.g:7451:3: 
+            // InternalEntityGrammar.g:7493:2: ()
+            // InternalEntityGrammar.g:7493:3: 
             {
             }
 
@@ -27330,14 +27535,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group__1"
-    // InternalEntityGrammar.g:7459:1: rule__EntityFeature__Group__1 : rule__EntityFeature__Group__1__Impl rule__EntityFeature__Group__2 ;
+    // InternalEntityGrammar.g:7501:1: rule__EntityFeature__Group__1 : rule__EntityFeature__Group__1__Impl rule__EntityFeature__Group__2 ;
     public final void rule__EntityFeature__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7463:1: ( rule__EntityFeature__Group__1__Impl rule__EntityFeature__Group__2 )
-            // InternalEntityGrammar.g:7464:2: rule__EntityFeature__Group__1__Impl rule__EntityFeature__Group__2
+            // InternalEntityGrammar.g:7505:1: ( rule__EntityFeature__Group__1__Impl rule__EntityFeature__Group__2 )
+            // InternalEntityGrammar.g:7506:2: rule__EntityFeature__Group__1__Impl rule__EntityFeature__Group__2
             {
             pushFollow(FOLLOW_31);
             rule__EntityFeature__Group__1__Impl();
@@ -27368,35 +27573,35 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group__1__Impl"
-    // InternalEntityGrammar.g:7471:1: rule__EntityFeature__Group__1__Impl : ( ( rule__EntityFeature__AnnotationsAssignment_1 )* ) ;
+    // InternalEntityGrammar.g:7513:1: rule__EntityFeature__Group__1__Impl : ( ( rule__EntityFeature__AnnotationsAssignment_1 )* ) ;
     public final void rule__EntityFeature__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7475:1: ( ( ( rule__EntityFeature__AnnotationsAssignment_1 )* ) )
-            // InternalEntityGrammar.g:7476:1: ( ( rule__EntityFeature__AnnotationsAssignment_1 )* )
+            // InternalEntityGrammar.g:7517:1: ( ( ( rule__EntityFeature__AnnotationsAssignment_1 )* ) )
+            // InternalEntityGrammar.g:7518:1: ( ( rule__EntityFeature__AnnotationsAssignment_1 )* )
             {
-            // InternalEntityGrammar.g:7476:1: ( ( rule__EntityFeature__AnnotationsAssignment_1 )* )
-            // InternalEntityGrammar.g:7477:2: ( rule__EntityFeature__AnnotationsAssignment_1 )*
+            // InternalEntityGrammar.g:7518:1: ( ( rule__EntityFeature__AnnotationsAssignment_1 )* )
+            // InternalEntityGrammar.g:7519:2: ( rule__EntityFeature__AnnotationsAssignment_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getAnnotationsAssignment_1()); 
             }
-            // InternalEntityGrammar.g:7478:2: ( rule__EntityFeature__AnnotationsAssignment_1 )*
-            loop92:
+            // InternalEntityGrammar.g:7520:2: ( rule__EntityFeature__AnnotationsAssignment_1 )*
+            loop94:
             do {
-                int alt92=2;
-                int LA92_0 = input.LA(1);
+                int alt94=2;
+                int LA94_0 = input.LA(1);
 
-                if ( (LA92_0==134) ) {
-                    alt92=1;
+                if ( (LA94_0==134) ) {
+                    alt94=1;
                 }
 
 
-                switch (alt92) {
+                switch (alt94) {
             	case 1 :
-            	    // InternalEntityGrammar.g:7478:3: rule__EntityFeature__AnnotationsAssignment_1
+            	    // InternalEntityGrammar.g:7520:3: rule__EntityFeature__AnnotationsAssignment_1
             	    {
             	    pushFollow(FOLLOW_8);
             	    rule__EntityFeature__AnnotationsAssignment_1();
@@ -27408,7 +27613,7 @@
             	    break;
 
             	default :
-            	    break loop92;
+            	    break loop94;
                 }
             } while (true);
 
@@ -27437,14 +27642,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group__2"
-    // InternalEntityGrammar.g:7486:1: rule__EntityFeature__Group__2 : rule__EntityFeature__Group__2__Impl ;
+    // InternalEntityGrammar.g:7528:1: rule__EntityFeature__Group__2 : rule__EntityFeature__Group__2__Impl ;
     public final void rule__EntityFeature__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7490:1: ( rule__EntityFeature__Group__2__Impl )
-            // InternalEntityGrammar.g:7491:2: rule__EntityFeature__Group__2__Impl
+            // InternalEntityGrammar.g:7532:1: ( rule__EntityFeature__Group__2__Impl )
+            // InternalEntityGrammar.g:7533:2: rule__EntityFeature__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Group__2__Impl();
@@ -27470,23 +27675,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group__2__Impl"
-    // InternalEntityGrammar.g:7497:1: rule__EntityFeature__Group__2__Impl : ( ( rule__EntityFeature__Alternatives_2 ) ) ;
+    // InternalEntityGrammar.g:7539:1: rule__EntityFeature__Group__2__Impl : ( ( rule__EntityFeature__Alternatives_2 ) ) ;
     public final void rule__EntityFeature__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7501:1: ( ( ( rule__EntityFeature__Alternatives_2 ) ) )
-            // InternalEntityGrammar.g:7502:1: ( ( rule__EntityFeature__Alternatives_2 ) )
+            // InternalEntityGrammar.g:7543:1: ( ( ( rule__EntityFeature__Alternatives_2 ) ) )
+            // InternalEntityGrammar.g:7544:1: ( ( rule__EntityFeature__Alternatives_2 ) )
             {
-            // InternalEntityGrammar.g:7502:1: ( ( rule__EntityFeature__Alternatives_2 ) )
-            // InternalEntityGrammar.g:7503:2: ( rule__EntityFeature__Alternatives_2 )
+            // InternalEntityGrammar.g:7544:1: ( ( rule__EntityFeature__Alternatives_2 ) )
+            // InternalEntityGrammar.g:7545:2: ( rule__EntityFeature__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getAlternatives_2()); 
             }
-            // InternalEntityGrammar.g:7504:2: ( rule__EntityFeature__Alternatives_2 )
-            // InternalEntityGrammar.g:7504:3: rule__EntityFeature__Alternatives_2
+            // InternalEntityGrammar.g:7546:2: ( rule__EntityFeature__Alternatives_2 )
+            // InternalEntityGrammar.g:7546:3: rule__EntityFeature__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Alternatives_2();
@@ -27521,14 +27726,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0__0"
-    // InternalEntityGrammar.g:7513:1: rule__EntityFeature__Group_2_0__0 : rule__EntityFeature__Group_2_0__0__Impl rule__EntityFeature__Group_2_0__1 ;
+    // InternalEntityGrammar.g:7555:1: rule__EntityFeature__Group_2_0__0 : rule__EntityFeature__Group_2_0__0__Impl rule__EntityFeature__Group_2_0__1 ;
     public final void rule__EntityFeature__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7517:1: ( rule__EntityFeature__Group_2_0__0__Impl rule__EntityFeature__Group_2_0__1 )
-            // InternalEntityGrammar.g:7518:2: rule__EntityFeature__Group_2_0__0__Impl rule__EntityFeature__Group_2_0__1
+            // InternalEntityGrammar.g:7559:1: ( rule__EntityFeature__Group_2_0__0__Impl rule__EntityFeature__Group_2_0__1 )
+            // InternalEntityGrammar.g:7560:2: rule__EntityFeature__Group_2_0__0__Impl rule__EntityFeature__Group_2_0__1
             {
             pushFollow(FOLLOW_32);
             rule__EntityFeature__Group_2_0__0__Impl();
@@ -27559,23 +27764,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0__0__Impl"
-    // InternalEntityGrammar.g:7525:1: rule__EntityFeature__Group_2_0__0__Impl : ( () ) ;
+    // InternalEntityGrammar.g:7567:1: rule__EntityFeature__Group_2_0__0__Impl : ( () ) ;
     public final void rule__EntityFeature__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7529:1: ( ( () ) )
-            // InternalEntityGrammar.g:7530:1: ( () )
+            // InternalEntityGrammar.g:7571:1: ( ( () ) )
+            // InternalEntityGrammar.g:7572:1: ( () )
             {
-            // InternalEntityGrammar.g:7530:1: ( () )
-            // InternalEntityGrammar.g:7531:2: ()
+            // InternalEntityGrammar.g:7572:1: ( () )
+            // InternalEntityGrammar.g:7573:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getLEntityReferenceAnnotationInfoAction_2_0_0()); 
             }
-            // InternalEntityGrammar.g:7532:2: ()
-            // InternalEntityGrammar.g:7532:3: 
+            // InternalEntityGrammar.g:7574:2: ()
+            // InternalEntityGrammar.g:7574:3: 
             {
             }
 
@@ -27600,14 +27805,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0__1"
-    // InternalEntityGrammar.g:7540:1: rule__EntityFeature__Group_2_0__1 : rule__EntityFeature__Group_2_0__1__Impl ;
+    // InternalEntityGrammar.g:7582:1: rule__EntityFeature__Group_2_0__1 : rule__EntityFeature__Group_2_0__1__Impl ;
     public final void rule__EntityFeature__Group_2_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7544:1: ( rule__EntityFeature__Group_2_0__1__Impl )
-            // InternalEntityGrammar.g:7545:2: rule__EntityFeature__Group_2_0__1__Impl
+            // InternalEntityGrammar.g:7586:1: ( rule__EntityFeature__Group_2_0__1__Impl )
+            // InternalEntityGrammar.g:7587:2: rule__EntityFeature__Group_2_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Group_2_0__1__Impl();
@@ -27633,23 +27838,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0__1__Impl"
-    // InternalEntityGrammar.g:7551:1: rule__EntityFeature__Group_2_0__1__Impl : ( ( rule__EntityFeature__Group_2_0_1__0 ) ) ;
+    // InternalEntityGrammar.g:7593:1: rule__EntityFeature__Group_2_0__1__Impl : ( ( rule__EntityFeature__Group_2_0_1__0 ) ) ;
     public final void rule__EntityFeature__Group_2_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7555:1: ( ( ( rule__EntityFeature__Group_2_0_1__0 ) ) )
-            // InternalEntityGrammar.g:7556:1: ( ( rule__EntityFeature__Group_2_0_1__0 ) )
+            // InternalEntityGrammar.g:7597:1: ( ( ( rule__EntityFeature__Group_2_0_1__0 ) ) )
+            // InternalEntityGrammar.g:7598:1: ( ( rule__EntityFeature__Group_2_0_1__0 ) )
             {
-            // InternalEntityGrammar.g:7556:1: ( ( rule__EntityFeature__Group_2_0_1__0 ) )
-            // InternalEntityGrammar.g:7557:2: ( rule__EntityFeature__Group_2_0_1__0 )
+            // InternalEntityGrammar.g:7598:1: ( ( rule__EntityFeature__Group_2_0_1__0 ) )
+            // InternalEntityGrammar.g:7599:2: ( rule__EntityFeature__Group_2_0_1__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1()); 
             }
-            // InternalEntityGrammar.g:7558:2: ( rule__EntityFeature__Group_2_0_1__0 )
-            // InternalEntityGrammar.g:7558:3: rule__EntityFeature__Group_2_0_1__0
+            // InternalEntityGrammar.g:7600:2: ( rule__EntityFeature__Group_2_0_1__0 )
+            // InternalEntityGrammar.g:7600:3: rule__EntityFeature__Group_2_0_1__0
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Group_2_0_1__0();
@@ -27684,14 +27889,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__0"
-    // InternalEntityGrammar.g:7567:1: rule__EntityFeature__Group_2_0_1__0 : rule__EntityFeature__Group_2_0_1__0__Impl rule__EntityFeature__Group_2_0_1__1 ;
+    // InternalEntityGrammar.g:7609:1: rule__EntityFeature__Group_2_0_1__0 : rule__EntityFeature__Group_2_0_1__0__Impl rule__EntityFeature__Group_2_0_1__1 ;
     public final void rule__EntityFeature__Group_2_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7571:1: ( rule__EntityFeature__Group_2_0_1__0__Impl rule__EntityFeature__Group_2_0_1__1 )
-            // InternalEntityGrammar.g:7572:2: rule__EntityFeature__Group_2_0_1__0__Impl rule__EntityFeature__Group_2_0_1__1
+            // InternalEntityGrammar.g:7613:1: ( rule__EntityFeature__Group_2_0_1__0__Impl rule__EntityFeature__Group_2_0_1__1 )
+            // InternalEntityGrammar.g:7614:2: rule__EntityFeature__Group_2_0_1__0__Impl rule__EntityFeature__Group_2_0_1__1
             {
             pushFollow(FOLLOW_33);
             rule__EntityFeature__Group_2_0_1__0__Impl();
@@ -27722,17 +27927,17 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__0__Impl"
-    // InternalEntityGrammar.g:7579:1: rule__EntityFeature__Group_2_0_1__0__Impl : ( 'ref' ) ;
+    // InternalEntityGrammar.g:7621:1: rule__EntityFeature__Group_2_0_1__0__Impl : ( 'ref' ) ;
     public final void rule__EntityFeature__Group_2_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7583:1: ( ( 'ref' ) )
-            // InternalEntityGrammar.g:7584:1: ( 'ref' )
+            // InternalEntityGrammar.g:7625:1: ( ( 'ref' ) )
+            // InternalEntityGrammar.g:7626:1: ( 'ref' )
             {
-            // InternalEntityGrammar.g:7584:1: ( 'ref' )
-            // InternalEntityGrammar.g:7585:2: 'ref'
+            // InternalEntityGrammar.g:7626:1: ( 'ref' )
+            // InternalEntityGrammar.g:7627:2: 'ref'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getRefKeyword_2_0_1_0()); 
@@ -27763,14 +27968,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__1"
-    // InternalEntityGrammar.g:7594:1: rule__EntityFeature__Group_2_0_1__1 : rule__EntityFeature__Group_2_0_1__1__Impl rule__EntityFeature__Group_2_0_1__2 ;
+    // InternalEntityGrammar.g:7636:1: rule__EntityFeature__Group_2_0_1__1 : rule__EntityFeature__Group_2_0_1__1__Impl rule__EntityFeature__Group_2_0_1__2 ;
     public final void rule__EntityFeature__Group_2_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7598:1: ( rule__EntityFeature__Group_2_0_1__1__Impl rule__EntityFeature__Group_2_0_1__2 )
-            // InternalEntityGrammar.g:7599:2: rule__EntityFeature__Group_2_0_1__1__Impl rule__EntityFeature__Group_2_0_1__2
+            // InternalEntityGrammar.g:7640:1: ( rule__EntityFeature__Group_2_0_1__1__Impl rule__EntityFeature__Group_2_0_1__2 )
+            // InternalEntityGrammar.g:7641:2: rule__EntityFeature__Group_2_0_1__1__Impl rule__EntityFeature__Group_2_0_1__2
             {
             pushFollow(FOLLOW_33);
             rule__EntityFeature__Group_2_0_1__1__Impl();
@@ -27801,31 +28006,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__1__Impl"
-    // InternalEntityGrammar.g:7606:1: rule__EntityFeature__Group_2_0_1__1__Impl : ( ( rule__EntityFeature__CascadingAssignment_2_0_1_1 )? ) ;
+    // InternalEntityGrammar.g:7648:1: rule__EntityFeature__Group_2_0_1__1__Impl : ( ( rule__EntityFeature__CascadingAssignment_2_0_1_1 )? ) ;
     public final void rule__EntityFeature__Group_2_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7610:1: ( ( ( rule__EntityFeature__CascadingAssignment_2_0_1_1 )? ) )
-            // InternalEntityGrammar.g:7611:1: ( ( rule__EntityFeature__CascadingAssignment_2_0_1_1 )? )
+            // InternalEntityGrammar.g:7652:1: ( ( ( rule__EntityFeature__CascadingAssignment_2_0_1_1 )? ) )
+            // InternalEntityGrammar.g:7653:1: ( ( rule__EntityFeature__CascadingAssignment_2_0_1_1 )? )
             {
-            // InternalEntityGrammar.g:7611:1: ( ( rule__EntityFeature__CascadingAssignment_2_0_1_1 )? )
-            // InternalEntityGrammar.g:7612:2: ( rule__EntityFeature__CascadingAssignment_2_0_1_1 )?
+            // InternalEntityGrammar.g:7653:1: ( ( rule__EntityFeature__CascadingAssignment_2_0_1_1 )? )
+            // InternalEntityGrammar.g:7654:2: ( rule__EntityFeature__CascadingAssignment_2_0_1_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getCascadingAssignment_2_0_1_1()); 
             }
-            // InternalEntityGrammar.g:7613:2: ( rule__EntityFeature__CascadingAssignment_2_0_1_1 )?
-            int alt93=2;
-            int LA93_0 = input.LA(1);
+            // InternalEntityGrammar.g:7655:2: ( rule__EntityFeature__CascadingAssignment_2_0_1_1 )?
+            int alt95=2;
+            int LA95_0 = input.LA(1);
 
-            if ( (LA93_0==32) ) {
-                alt93=1;
+            if ( (LA95_0==32) ) {
+                alt95=1;
             }
-            switch (alt93) {
+            switch (alt95) {
                 case 1 :
-                    // InternalEntityGrammar.g:7613:3: rule__EntityFeature__CascadingAssignment_2_0_1_1
+                    // InternalEntityGrammar.g:7655:3: rule__EntityFeature__CascadingAssignment_2_0_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__CascadingAssignment_2_0_1_1();
@@ -27863,14 +28068,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__2"
-    // InternalEntityGrammar.g:7621:1: rule__EntityFeature__Group_2_0_1__2 : rule__EntityFeature__Group_2_0_1__2__Impl rule__EntityFeature__Group_2_0_1__3 ;
+    // InternalEntityGrammar.g:7663:1: rule__EntityFeature__Group_2_0_1__2 : rule__EntityFeature__Group_2_0_1__2__Impl rule__EntityFeature__Group_2_0_1__3 ;
     public final void rule__EntityFeature__Group_2_0_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7625:1: ( rule__EntityFeature__Group_2_0_1__2__Impl rule__EntityFeature__Group_2_0_1__3 )
-            // InternalEntityGrammar.g:7626:2: rule__EntityFeature__Group_2_0_1__2__Impl rule__EntityFeature__Group_2_0_1__3
+            // InternalEntityGrammar.g:7667:1: ( rule__EntityFeature__Group_2_0_1__2__Impl rule__EntityFeature__Group_2_0_1__3 )
+            // InternalEntityGrammar.g:7668:2: rule__EntityFeature__Group_2_0_1__2__Impl rule__EntityFeature__Group_2_0_1__3
             {
             pushFollow(FOLLOW_33);
             rule__EntityFeature__Group_2_0_1__2__Impl();
@@ -27901,31 +28106,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__2__Impl"
-    // InternalEntityGrammar.g:7633:1: rule__EntityFeature__Group_2_0_1__2__Impl : ( ( rule__EntityFeature__Group_2_0_1_2__0 )? ) ;
+    // InternalEntityGrammar.g:7675:1: rule__EntityFeature__Group_2_0_1__2__Impl : ( ( rule__EntityFeature__Group_2_0_1_2__0 )? ) ;
     public final void rule__EntityFeature__Group_2_0_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7637:1: ( ( ( rule__EntityFeature__Group_2_0_1_2__0 )? ) )
-            // InternalEntityGrammar.g:7638:1: ( ( rule__EntityFeature__Group_2_0_1_2__0 )? )
+            // InternalEntityGrammar.g:7679:1: ( ( ( rule__EntityFeature__Group_2_0_1_2__0 )? ) )
+            // InternalEntityGrammar.g:7680:1: ( ( rule__EntityFeature__Group_2_0_1_2__0 )? )
             {
-            // InternalEntityGrammar.g:7638:1: ( ( rule__EntityFeature__Group_2_0_1_2__0 )? )
-            // InternalEntityGrammar.g:7639:2: ( rule__EntityFeature__Group_2_0_1_2__0 )?
+            // InternalEntityGrammar.g:7680:1: ( ( rule__EntityFeature__Group_2_0_1_2__0 )? )
+            // InternalEntityGrammar.g:7681:2: ( rule__EntityFeature__Group_2_0_1_2__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_2()); 
             }
-            // InternalEntityGrammar.g:7640:2: ( rule__EntityFeature__Group_2_0_1_2__0 )?
-            int alt94=2;
-            int LA94_0 = input.LA(1);
+            // InternalEntityGrammar.g:7682:2: ( rule__EntityFeature__Group_2_0_1_2__0 )?
+            int alt96=2;
+            int LA96_0 = input.LA(1);
 
-            if ( (LA94_0==98) ) {
-                alt94=1;
+            if ( (LA96_0==98) ) {
+                alt96=1;
             }
-            switch (alt94) {
+            switch (alt96) {
                 case 1 :
-                    // InternalEntityGrammar.g:7640:3: rule__EntityFeature__Group_2_0_1_2__0
+                    // InternalEntityGrammar.g:7682:3: rule__EntityFeature__Group_2_0_1_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_0_1_2__0();
@@ -27963,14 +28168,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__3"
-    // InternalEntityGrammar.g:7648:1: rule__EntityFeature__Group_2_0_1__3 : rule__EntityFeature__Group_2_0_1__3__Impl rule__EntityFeature__Group_2_0_1__4 ;
+    // InternalEntityGrammar.g:7690:1: rule__EntityFeature__Group_2_0_1__3 : rule__EntityFeature__Group_2_0_1__3__Impl rule__EntityFeature__Group_2_0_1__4 ;
     public final void rule__EntityFeature__Group_2_0_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7652:1: ( rule__EntityFeature__Group_2_0_1__3__Impl rule__EntityFeature__Group_2_0_1__4 )
-            // InternalEntityGrammar.g:7653:2: rule__EntityFeature__Group_2_0_1__3__Impl rule__EntityFeature__Group_2_0_1__4
+            // InternalEntityGrammar.g:7694:1: ( rule__EntityFeature__Group_2_0_1__3__Impl rule__EntityFeature__Group_2_0_1__4 )
+            // InternalEntityGrammar.g:7695:2: rule__EntityFeature__Group_2_0_1__3__Impl rule__EntityFeature__Group_2_0_1__4
             {
             pushFollow(FOLLOW_34);
             rule__EntityFeature__Group_2_0_1__3__Impl();
@@ -28001,23 +28206,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__3__Impl"
-    // InternalEntityGrammar.g:7660:1: rule__EntityFeature__Group_2_0_1__3__Impl : ( ( rule__EntityFeature__TypeAssignment_2_0_1_3 ) ) ;
+    // InternalEntityGrammar.g:7702:1: rule__EntityFeature__Group_2_0_1__3__Impl : ( ( rule__EntityFeature__TypeAssignment_2_0_1_3 ) ) ;
     public final void rule__EntityFeature__Group_2_0_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7664:1: ( ( ( rule__EntityFeature__TypeAssignment_2_0_1_3 ) ) )
-            // InternalEntityGrammar.g:7665:1: ( ( rule__EntityFeature__TypeAssignment_2_0_1_3 ) )
+            // InternalEntityGrammar.g:7706:1: ( ( ( rule__EntityFeature__TypeAssignment_2_0_1_3 ) ) )
+            // InternalEntityGrammar.g:7707:1: ( ( rule__EntityFeature__TypeAssignment_2_0_1_3 ) )
             {
-            // InternalEntityGrammar.g:7665:1: ( ( rule__EntityFeature__TypeAssignment_2_0_1_3 ) )
-            // InternalEntityGrammar.g:7666:2: ( rule__EntityFeature__TypeAssignment_2_0_1_3 )
+            // InternalEntityGrammar.g:7707:1: ( ( rule__EntityFeature__TypeAssignment_2_0_1_3 ) )
+            // InternalEntityGrammar.g:7708:2: ( rule__EntityFeature__TypeAssignment_2_0_1_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_0_1_3()); 
             }
-            // InternalEntityGrammar.g:7667:2: ( rule__EntityFeature__TypeAssignment_2_0_1_3 )
-            // InternalEntityGrammar.g:7667:3: rule__EntityFeature__TypeAssignment_2_0_1_3
+            // InternalEntityGrammar.g:7709:2: ( rule__EntityFeature__TypeAssignment_2_0_1_3 )
+            // InternalEntityGrammar.g:7709:3: rule__EntityFeature__TypeAssignment_2_0_1_3
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__TypeAssignment_2_0_1_3();
@@ -28052,14 +28257,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__4"
-    // InternalEntityGrammar.g:7675:1: rule__EntityFeature__Group_2_0_1__4 : rule__EntityFeature__Group_2_0_1__4__Impl rule__EntityFeature__Group_2_0_1__5 ;
+    // InternalEntityGrammar.g:7717:1: rule__EntityFeature__Group_2_0_1__4 : rule__EntityFeature__Group_2_0_1__4__Impl rule__EntityFeature__Group_2_0_1__5 ;
     public final void rule__EntityFeature__Group_2_0_1__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7679:1: ( rule__EntityFeature__Group_2_0_1__4__Impl rule__EntityFeature__Group_2_0_1__5 )
-            // InternalEntityGrammar.g:7680:2: rule__EntityFeature__Group_2_0_1__4__Impl rule__EntityFeature__Group_2_0_1__5
+            // InternalEntityGrammar.g:7721:1: ( rule__EntityFeature__Group_2_0_1__4__Impl rule__EntityFeature__Group_2_0_1__5 )
+            // InternalEntityGrammar.g:7722:2: rule__EntityFeature__Group_2_0_1__4__Impl rule__EntityFeature__Group_2_0_1__5
             {
             pushFollow(FOLLOW_34);
             rule__EntityFeature__Group_2_0_1__4__Impl();
@@ -28090,35 +28295,35 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__4__Impl"
-    // InternalEntityGrammar.g:7687:1: rule__EntityFeature__Group_2_0_1__4__Impl : ( ( rule__EntityFeature__MultiplicityAssignment_2_0_1_4 )? ) ;
+    // InternalEntityGrammar.g:7729:1: rule__EntityFeature__Group_2_0_1__4__Impl : ( ( rule__EntityFeature__MultiplicityAssignment_2_0_1_4 )? ) ;
     public final void rule__EntityFeature__Group_2_0_1__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7691:1: ( ( ( rule__EntityFeature__MultiplicityAssignment_2_0_1_4 )? ) )
-            // InternalEntityGrammar.g:7692:1: ( ( rule__EntityFeature__MultiplicityAssignment_2_0_1_4 )? )
+            // InternalEntityGrammar.g:7733:1: ( ( ( rule__EntityFeature__MultiplicityAssignment_2_0_1_4 )? ) )
+            // InternalEntityGrammar.g:7734:1: ( ( rule__EntityFeature__MultiplicityAssignment_2_0_1_4 )? )
             {
-            // InternalEntityGrammar.g:7692:1: ( ( rule__EntityFeature__MultiplicityAssignment_2_0_1_4 )? )
-            // InternalEntityGrammar.g:7693:2: ( rule__EntityFeature__MultiplicityAssignment_2_0_1_4 )?
+            // InternalEntityGrammar.g:7734:1: ( ( rule__EntityFeature__MultiplicityAssignment_2_0_1_4 )? )
+            // InternalEntityGrammar.g:7735:2: ( rule__EntityFeature__MultiplicityAssignment_2_0_1_4 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getMultiplicityAssignment_2_0_1_4()); 
             }
-            // InternalEntityGrammar.g:7694:2: ( rule__EntityFeature__MultiplicityAssignment_2_0_1_4 )?
-            int alt95=2;
-            int LA95_0 = input.LA(1);
+            // InternalEntityGrammar.g:7736:2: ( rule__EntityFeature__MultiplicityAssignment_2_0_1_4 )?
+            int alt97=2;
+            int LA97_0 = input.LA(1);
 
-            if ( (LA95_0==99) ) {
-                int LA95_1 = input.LA(2);
+            if ( (LA97_0==99) ) {
+                int LA97_1 = input.LA(2);
 
-                if ( (LA95_1==33||LA95_1==53||(LA95_1>=84 && LA95_1<=86)) ) {
-                    alt95=1;
+                if ( (LA97_1==33||LA97_1==53||(LA97_1>=84 && LA97_1<=86)) ) {
+                    alt97=1;
                 }
             }
-            switch (alt95) {
+            switch (alt97) {
                 case 1 :
-                    // InternalEntityGrammar.g:7694:3: rule__EntityFeature__MultiplicityAssignment_2_0_1_4
+                    // InternalEntityGrammar.g:7736:3: rule__EntityFeature__MultiplicityAssignment_2_0_1_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__MultiplicityAssignment_2_0_1_4();
@@ -28156,14 +28361,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__5"
-    // InternalEntityGrammar.g:7702:1: rule__EntityFeature__Group_2_0_1__5 : rule__EntityFeature__Group_2_0_1__5__Impl rule__EntityFeature__Group_2_0_1__6 ;
+    // InternalEntityGrammar.g:7744:1: rule__EntityFeature__Group_2_0_1__5 : rule__EntityFeature__Group_2_0_1__5__Impl rule__EntityFeature__Group_2_0_1__6 ;
     public final void rule__EntityFeature__Group_2_0_1__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7706:1: ( rule__EntityFeature__Group_2_0_1__5__Impl rule__EntityFeature__Group_2_0_1__6 )
-            // InternalEntityGrammar.g:7707:2: rule__EntityFeature__Group_2_0_1__5__Impl rule__EntityFeature__Group_2_0_1__6
+            // InternalEntityGrammar.g:7748:1: ( rule__EntityFeature__Group_2_0_1__5__Impl rule__EntityFeature__Group_2_0_1__6 )
+            // InternalEntityGrammar.g:7749:2: rule__EntityFeature__Group_2_0_1__5__Impl rule__EntityFeature__Group_2_0_1__6
             {
             pushFollow(FOLLOW_34);
             rule__EntityFeature__Group_2_0_1__5__Impl();
@@ -28194,31 +28399,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__5__Impl"
-    // InternalEntityGrammar.g:7714:1: rule__EntityFeature__Group_2_0_1__5__Impl : ( ( rule__EntityFeature__Group_2_0_1_5__0 )? ) ;
+    // InternalEntityGrammar.g:7756:1: rule__EntityFeature__Group_2_0_1__5__Impl : ( ( rule__EntityFeature__Group_2_0_1_5__0 )? ) ;
     public final void rule__EntityFeature__Group_2_0_1__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7718:1: ( ( ( rule__EntityFeature__Group_2_0_1_5__0 )? ) )
-            // InternalEntityGrammar.g:7719:1: ( ( rule__EntityFeature__Group_2_0_1_5__0 )? )
+            // InternalEntityGrammar.g:7760:1: ( ( ( rule__EntityFeature__Group_2_0_1_5__0 )? ) )
+            // InternalEntityGrammar.g:7761:1: ( ( rule__EntityFeature__Group_2_0_1_5__0 )? )
             {
-            // InternalEntityGrammar.g:7719:1: ( ( rule__EntityFeature__Group_2_0_1_5__0 )? )
-            // InternalEntityGrammar.g:7720:2: ( rule__EntityFeature__Group_2_0_1_5__0 )?
+            // InternalEntityGrammar.g:7761:1: ( ( rule__EntityFeature__Group_2_0_1_5__0 )? )
+            // InternalEntityGrammar.g:7762:2: ( rule__EntityFeature__Group_2_0_1_5__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_5()); 
             }
-            // InternalEntityGrammar.g:7721:2: ( rule__EntityFeature__Group_2_0_1_5__0 )?
-            int alt96=2;
-            int LA96_0 = input.LA(1);
+            // InternalEntityGrammar.g:7763:2: ( rule__EntityFeature__Group_2_0_1_5__0 )?
+            int alt98=2;
+            int LA98_0 = input.LA(1);
 
-            if ( (LA96_0==99) ) {
-                alt96=1;
+            if ( (LA98_0==99) ) {
+                alt98=1;
             }
-            switch (alt96) {
+            switch (alt98) {
                 case 1 :
-                    // InternalEntityGrammar.g:7721:3: rule__EntityFeature__Group_2_0_1_5__0
+                    // InternalEntityGrammar.g:7763:3: rule__EntityFeature__Group_2_0_1_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_0_1_5__0();
@@ -28256,14 +28461,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__6"
-    // InternalEntityGrammar.g:7729:1: rule__EntityFeature__Group_2_0_1__6 : rule__EntityFeature__Group_2_0_1__6__Impl rule__EntityFeature__Group_2_0_1__7 ;
+    // InternalEntityGrammar.g:7771:1: rule__EntityFeature__Group_2_0_1__6 : rule__EntityFeature__Group_2_0_1__6__Impl rule__EntityFeature__Group_2_0_1__7 ;
     public final void rule__EntityFeature__Group_2_0_1__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7733:1: ( rule__EntityFeature__Group_2_0_1__6__Impl rule__EntityFeature__Group_2_0_1__7 )
-            // InternalEntityGrammar.g:7734:2: rule__EntityFeature__Group_2_0_1__6__Impl rule__EntityFeature__Group_2_0_1__7
+            // InternalEntityGrammar.g:7775:1: ( rule__EntityFeature__Group_2_0_1__6__Impl rule__EntityFeature__Group_2_0_1__7 )
+            // InternalEntityGrammar.g:7776:2: rule__EntityFeature__Group_2_0_1__6__Impl rule__EntityFeature__Group_2_0_1__7
             {
             pushFollow(FOLLOW_35);
             rule__EntityFeature__Group_2_0_1__6__Impl();
@@ -28294,23 +28499,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__6__Impl"
-    // InternalEntityGrammar.g:7741:1: rule__EntityFeature__Group_2_0_1__6__Impl : ( ( rule__EntityFeature__NameAssignment_2_0_1_6 ) ) ;
+    // InternalEntityGrammar.g:7783:1: rule__EntityFeature__Group_2_0_1__6__Impl : ( ( rule__EntityFeature__NameAssignment_2_0_1_6 ) ) ;
     public final void rule__EntityFeature__Group_2_0_1__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7745:1: ( ( ( rule__EntityFeature__NameAssignment_2_0_1_6 ) ) )
-            // InternalEntityGrammar.g:7746:1: ( ( rule__EntityFeature__NameAssignment_2_0_1_6 ) )
+            // InternalEntityGrammar.g:7787:1: ( ( ( rule__EntityFeature__NameAssignment_2_0_1_6 ) ) )
+            // InternalEntityGrammar.g:7788:1: ( ( rule__EntityFeature__NameAssignment_2_0_1_6 ) )
             {
-            // InternalEntityGrammar.g:7746:1: ( ( rule__EntityFeature__NameAssignment_2_0_1_6 ) )
-            // InternalEntityGrammar.g:7747:2: ( rule__EntityFeature__NameAssignment_2_0_1_6 )
+            // InternalEntityGrammar.g:7788:1: ( ( rule__EntityFeature__NameAssignment_2_0_1_6 ) )
+            // InternalEntityGrammar.g:7789:2: ( rule__EntityFeature__NameAssignment_2_0_1_6 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_0_1_6()); 
             }
-            // InternalEntityGrammar.g:7748:2: ( rule__EntityFeature__NameAssignment_2_0_1_6 )
-            // InternalEntityGrammar.g:7748:3: rule__EntityFeature__NameAssignment_2_0_1_6
+            // InternalEntityGrammar.g:7790:2: ( rule__EntityFeature__NameAssignment_2_0_1_6 )
+            // InternalEntityGrammar.g:7790:3: rule__EntityFeature__NameAssignment_2_0_1_6
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__NameAssignment_2_0_1_6();
@@ -28345,14 +28550,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__7"
-    // InternalEntityGrammar.g:7756:1: rule__EntityFeature__Group_2_0_1__7 : rule__EntityFeature__Group_2_0_1__7__Impl rule__EntityFeature__Group_2_0_1__8 ;
+    // InternalEntityGrammar.g:7798:1: rule__EntityFeature__Group_2_0_1__7 : rule__EntityFeature__Group_2_0_1__7__Impl rule__EntityFeature__Group_2_0_1__8 ;
     public final void rule__EntityFeature__Group_2_0_1__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7760:1: ( rule__EntityFeature__Group_2_0_1__7__Impl rule__EntityFeature__Group_2_0_1__8 )
-            // InternalEntityGrammar.g:7761:2: rule__EntityFeature__Group_2_0_1__7__Impl rule__EntityFeature__Group_2_0_1__8
+            // InternalEntityGrammar.g:7802:1: ( rule__EntityFeature__Group_2_0_1__7__Impl rule__EntityFeature__Group_2_0_1__8 )
+            // InternalEntityGrammar.g:7803:2: rule__EntityFeature__Group_2_0_1__7__Impl rule__EntityFeature__Group_2_0_1__8
             {
             pushFollow(FOLLOW_35);
             rule__EntityFeature__Group_2_0_1__7__Impl();
@@ -28383,31 +28588,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__7__Impl"
-    // InternalEntityGrammar.g:7768:1: rule__EntityFeature__Group_2_0_1__7__Impl : ( ( rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7 )? ) ;
+    // InternalEntityGrammar.g:7810:1: rule__EntityFeature__Group_2_0_1__7__Impl : ( ( rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7 )? ) ;
     public final void rule__EntityFeature__Group_2_0_1__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7772:1: ( ( ( rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7 )? ) )
-            // InternalEntityGrammar.g:7773:1: ( ( rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7 )? )
+            // InternalEntityGrammar.g:7814:1: ( ( ( rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7 )? ) )
+            // InternalEntityGrammar.g:7815:1: ( ( rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7 )? )
             {
-            // InternalEntityGrammar.g:7773:1: ( ( rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7 )? )
-            // InternalEntityGrammar.g:7774:2: ( rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7 )?
+            // InternalEntityGrammar.g:7815:1: ( ( rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7 )? )
+            // InternalEntityGrammar.g:7816:2: ( rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getPersistenceInfoAssignment_2_0_1_7()); 
             }
-            // InternalEntityGrammar.g:7775:2: ( rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7 )?
-            int alt97=2;
-            int LA97_0 = input.LA(1);
+            // InternalEntityGrammar.g:7817:2: ( rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7 )?
+            int alt99=2;
+            int LA99_0 = input.LA(1);
 
-            if ( (LA97_0==90) ) {
-                alt97=1;
+            if ( (LA99_0==90) ) {
+                alt99=1;
             }
-            switch (alt97) {
+            switch (alt99) {
                 case 1 :
-                    // InternalEntityGrammar.g:7775:3: rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7
+                    // InternalEntityGrammar.g:7817:3: rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__PersistenceInfoAssignment_2_0_1_7();
@@ -28445,14 +28650,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__8"
-    // InternalEntityGrammar.g:7783:1: rule__EntityFeature__Group_2_0_1__8 : rule__EntityFeature__Group_2_0_1__8__Impl rule__EntityFeature__Group_2_0_1__9 ;
+    // InternalEntityGrammar.g:7825:1: rule__EntityFeature__Group_2_0_1__8 : rule__EntityFeature__Group_2_0_1__8__Impl rule__EntityFeature__Group_2_0_1__9 ;
     public final void rule__EntityFeature__Group_2_0_1__8() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7787:1: ( rule__EntityFeature__Group_2_0_1__8__Impl rule__EntityFeature__Group_2_0_1__9 )
-            // InternalEntityGrammar.g:7788:2: rule__EntityFeature__Group_2_0_1__8__Impl rule__EntityFeature__Group_2_0_1__9
+            // InternalEntityGrammar.g:7829:1: ( rule__EntityFeature__Group_2_0_1__8__Impl rule__EntityFeature__Group_2_0_1__9 )
+            // InternalEntityGrammar.g:7830:2: rule__EntityFeature__Group_2_0_1__8__Impl rule__EntityFeature__Group_2_0_1__9
             {
             pushFollow(FOLLOW_35);
             rule__EntityFeature__Group_2_0_1__8__Impl();
@@ -28483,31 +28688,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__8__Impl"
-    // InternalEntityGrammar.g:7795:1: rule__EntityFeature__Group_2_0_1__8__Impl : ( ( rule__EntityFeature__Group_2_0_1_8__0 )? ) ;
+    // InternalEntityGrammar.g:7837:1: rule__EntityFeature__Group_2_0_1__8__Impl : ( ( rule__EntityFeature__Group_2_0_1_8__0 )? ) ;
     public final void rule__EntityFeature__Group_2_0_1__8__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7799:1: ( ( ( rule__EntityFeature__Group_2_0_1_8__0 )? ) )
-            // InternalEntityGrammar.g:7800:1: ( ( rule__EntityFeature__Group_2_0_1_8__0 )? )
+            // InternalEntityGrammar.g:7841:1: ( ( ( rule__EntityFeature__Group_2_0_1_8__0 )? ) )
+            // InternalEntityGrammar.g:7842:1: ( ( rule__EntityFeature__Group_2_0_1_8__0 )? )
             {
-            // InternalEntityGrammar.g:7800:1: ( ( rule__EntityFeature__Group_2_0_1_8__0 )? )
-            // InternalEntityGrammar.g:7801:2: ( rule__EntityFeature__Group_2_0_1_8__0 )?
+            // InternalEntityGrammar.g:7842:1: ( ( rule__EntityFeature__Group_2_0_1_8__0 )? )
+            // InternalEntityGrammar.g:7843:2: ( rule__EntityFeature__Group_2_0_1_8__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_8()); 
             }
-            // InternalEntityGrammar.g:7802:2: ( rule__EntityFeature__Group_2_0_1_8__0 )?
-            int alt98=2;
-            int LA98_0 = input.LA(1);
+            // InternalEntityGrammar.g:7844:2: ( rule__EntityFeature__Group_2_0_1_8__0 )?
+            int alt100=2;
+            int LA100_0 = input.LA(1);
 
-            if ( (LA98_0==101) ) {
-                alt98=1;
+            if ( (LA100_0==101) ) {
+                alt100=1;
             }
-            switch (alt98) {
+            switch (alt100) {
                 case 1 :
-                    // InternalEntityGrammar.g:7802:3: rule__EntityFeature__Group_2_0_1_8__0
+                    // InternalEntityGrammar.g:7844:3: rule__EntityFeature__Group_2_0_1_8__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_0_1_8__0();
@@ -28545,14 +28750,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__9"
-    // InternalEntityGrammar.g:7810:1: rule__EntityFeature__Group_2_0_1__9 : rule__EntityFeature__Group_2_0_1__9__Impl rule__EntityFeature__Group_2_0_1__10 ;
+    // InternalEntityGrammar.g:7852:1: rule__EntityFeature__Group_2_0_1__9 : rule__EntityFeature__Group_2_0_1__9__Impl rule__EntityFeature__Group_2_0_1__10 ;
     public final void rule__EntityFeature__Group_2_0_1__9() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7814:1: ( rule__EntityFeature__Group_2_0_1__9__Impl rule__EntityFeature__Group_2_0_1__10 )
-            // InternalEntityGrammar.g:7815:2: rule__EntityFeature__Group_2_0_1__9__Impl rule__EntityFeature__Group_2_0_1__10
+            // InternalEntityGrammar.g:7856:1: ( rule__EntityFeature__Group_2_0_1__9__Impl rule__EntityFeature__Group_2_0_1__10 )
+            // InternalEntityGrammar.g:7857:2: rule__EntityFeature__Group_2_0_1__9__Impl rule__EntityFeature__Group_2_0_1__10
             {
             pushFollow(FOLLOW_35);
             rule__EntityFeature__Group_2_0_1__9__Impl();
@@ -28583,31 +28788,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__9__Impl"
-    // InternalEntityGrammar.g:7822:1: rule__EntityFeature__Group_2_0_1__9__Impl : ( ( rule__EntityFeature__Group_2_0_1_9__0 )? ) ;
+    // InternalEntityGrammar.g:7864:1: rule__EntityFeature__Group_2_0_1__9__Impl : ( ( rule__EntityFeature__Group_2_0_1_9__0 )? ) ;
     public final void rule__EntityFeature__Group_2_0_1__9__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7826:1: ( ( ( rule__EntityFeature__Group_2_0_1_9__0 )? ) )
-            // InternalEntityGrammar.g:7827:1: ( ( rule__EntityFeature__Group_2_0_1_9__0 )? )
+            // InternalEntityGrammar.g:7868:1: ( ( ( rule__EntityFeature__Group_2_0_1_9__0 )? ) )
+            // InternalEntityGrammar.g:7869:1: ( ( rule__EntityFeature__Group_2_0_1_9__0 )? )
             {
-            // InternalEntityGrammar.g:7827:1: ( ( rule__EntityFeature__Group_2_0_1_9__0 )? )
-            // InternalEntityGrammar.g:7828:2: ( rule__EntityFeature__Group_2_0_1_9__0 )?
+            // InternalEntityGrammar.g:7869:1: ( ( rule__EntityFeature__Group_2_0_1_9__0 )? )
+            // InternalEntityGrammar.g:7870:2: ( rule__EntityFeature__Group_2_0_1_9__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_9()); 
             }
-            // InternalEntityGrammar.g:7829:2: ( rule__EntityFeature__Group_2_0_1_9__0 )?
-            int alt99=2;
-            int LA99_0 = input.LA(1);
+            // InternalEntityGrammar.g:7871:2: ( rule__EntityFeature__Group_2_0_1_9__0 )?
+            int alt101=2;
+            int LA101_0 = input.LA(1);
 
-            if ( (LA99_0==102) ) {
-                alt99=1;
+            if ( (LA101_0==165) ) {
+                alt101=1;
             }
-            switch (alt99) {
+            switch (alt101) {
                 case 1 :
-                    // InternalEntityGrammar.g:7829:3: rule__EntityFeature__Group_2_0_1_9__0
+                    // InternalEntityGrammar.g:7871:3: rule__EntityFeature__Group_2_0_1_9__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_0_1_9__0();
@@ -28645,20 +28850,25 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__10"
-    // InternalEntityGrammar.g:7837:1: rule__EntityFeature__Group_2_0_1__10 : rule__EntityFeature__Group_2_0_1__10__Impl ;
+    // InternalEntityGrammar.g:7879:1: rule__EntityFeature__Group_2_0_1__10 : rule__EntityFeature__Group_2_0_1__10__Impl rule__EntityFeature__Group_2_0_1__11 ;
     public final void rule__EntityFeature__Group_2_0_1__10() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7841:1: ( rule__EntityFeature__Group_2_0_1__10__Impl )
-            // InternalEntityGrammar.g:7842:2: rule__EntityFeature__Group_2_0_1__10__Impl
+            // InternalEntityGrammar.g:7883:1: ( rule__EntityFeature__Group_2_0_1__10__Impl rule__EntityFeature__Group_2_0_1__11 )
+            // InternalEntityGrammar.g:7884:2: rule__EntityFeature__Group_2_0_1__10__Impl rule__EntityFeature__Group_2_0_1__11
             {
-            pushFollow(FOLLOW_2);
+            pushFollow(FOLLOW_35);
             rule__EntityFeature__Group_2_0_1__10__Impl();
 
             state._fsp--;
             if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_0_1__11();
+
+            state._fsp--;
+            if (state.failed) return ;
 
             }
 
@@ -28678,34 +28888,34 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1__10__Impl"
-    // InternalEntityGrammar.g:7848:1: rule__EntityFeature__Group_2_0_1__10__Impl : ( ( rule__EntityFeature__ResultFiltersAssignment_2_0_1_10 )? ) ;
+    // InternalEntityGrammar.g:7891:1: rule__EntityFeature__Group_2_0_1__10__Impl : ( ( rule__EntityFeature__Group_2_0_1_10__0 )? ) ;
     public final void rule__EntityFeature__Group_2_0_1__10__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7852:1: ( ( ( rule__EntityFeature__ResultFiltersAssignment_2_0_1_10 )? ) )
-            // InternalEntityGrammar.g:7853:1: ( ( rule__EntityFeature__ResultFiltersAssignment_2_0_1_10 )? )
+            // InternalEntityGrammar.g:7895:1: ( ( ( rule__EntityFeature__Group_2_0_1_10__0 )? ) )
+            // InternalEntityGrammar.g:7896:1: ( ( rule__EntityFeature__Group_2_0_1_10__0 )? )
             {
-            // InternalEntityGrammar.g:7853:1: ( ( rule__EntityFeature__ResultFiltersAssignment_2_0_1_10 )? )
-            // InternalEntityGrammar.g:7854:2: ( rule__EntityFeature__ResultFiltersAssignment_2_0_1_10 )?
+            // InternalEntityGrammar.g:7896:1: ( ( rule__EntityFeature__Group_2_0_1_10__0 )? )
+            // InternalEntityGrammar.g:7897:2: ( rule__EntityFeature__Group_2_0_1_10__0 )?
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_10()); 
+               before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_10()); 
             }
-            // InternalEntityGrammar.g:7855:2: ( rule__EntityFeature__ResultFiltersAssignment_2_0_1_10 )?
-            int alt100=2;
-            int LA100_0 = input.LA(1);
+            // InternalEntityGrammar.g:7898:2: ( rule__EntityFeature__Group_2_0_1_10__0 )?
+            int alt102=2;
+            int LA102_0 = input.LA(1);
 
-            if ( (LA100_0==130) ) {
-                alt100=1;
+            if ( (LA102_0==102) ) {
+                alt102=1;
             }
-            switch (alt100) {
+            switch (alt102) {
                 case 1 :
-                    // InternalEntityGrammar.g:7855:3: rule__EntityFeature__ResultFiltersAssignment_2_0_1_10
+                    // InternalEntityGrammar.g:7898:3: rule__EntityFeature__Group_2_0_1_10__0
                     {
                     pushFollow(FOLLOW_2);
-                    rule__EntityFeature__ResultFiltersAssignment_2_0_1_10();
+                    rule__EntityFeature__Group_2_0_1_10__0();
 
                     state._fsp--;
                     if (state.failed) return ;
@@ -28716,7 +28926,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_10()); 
+               after(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_10()); 
             }
 
             }
@@ -28739,15 +28949,110 @@
     // $ANTLR end "rule__EntityFeature__Group_2_0_1__10__Impl"
 
 
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1__11"
+    // InternalEntityGrammar.g:7906:1: rule__EntityFeature__Group_2_0_1__11 : rule__EntityFeature__Group_2_0_1__11__Impl ;
+    public final void rule__EntityFeature__Group_2_0_1__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:7910:1: ( rule__EntityFeature__Group_2_0_1__11__Impl )
+            // InternalEntityGrammar.g:7911:2: rule__EntityFeature__Group_2_0_1__11__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_0_1__11__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1__11"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1__11__Impl"
+    // InternalEntityGrammar.g:7917:1: rule__EntityFeature__Group_2_0_1__11__Impl : ( ( rule__EntityFeature__ResultFiltersAssignment_2_0_1_11 )? ) ;
+    public final void rule__EntityFeature__Group_2_0_1__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:7921:1: ( ( ( rule__EntityFeature__ResultFiltersAssignment_2_0_1_11 )? ) )
+            // InternalEntityGrammar.g:7922:1: ( ( rule__EntityFeature__ResultFiltersAssignment_2_0_1_11 )? )
+            {
+            // InternalEntityGrammar.g:7922:1: ( ( rule__EntityFeature__ResultFiltersAssignment_2_0_1_11 )? )
+            // InternalEntityGrammar.g:7923:2: ( rule__EntityFeature__ResultFiltersAssignment_2_0_1_11 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_11()); 
+            }
+            // InternalEntityGrammar.g:7924:2: ( rule__EntityFeature__ResultFiltersAssignment_2_0_1_11 )?
+            int alt103=2;
+            int LA103_0 = input.LA(1);
+
+            if ( (LA103_0==130) ) {
+                alt103=1;
+            }
+            switch (alt103) {
+                case 1 :
+                    // InternalEntityGrammar.g:7924:3: rule__EntityFeature__ResultFiltersAssignment_2_0_1_11
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__ResultFiltersAssignment_2_0_1_11();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_11()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1__11__Impl"
+
+
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_2__0"
-    // InternalEntityGrammar.g:7864:1: rule__EntityFeature__Group_2_0_1_2__0 : rule__EntityFeature__Group_2_0_1_2__0__Impl rule__EntityFeature__Group_2_0_1_2__1 ;
+    // InternalEntityGrammar.g:7933:1: rule__EntityFeature__Group_2_0_1_2__0 : rule__EntityFeature__Group_2_0_1_2__0__Impl rule__EntityFeature__Group_2_0_1_2__1 ;
     public final void rule__EntityFeature__Group_2_0_1_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7868:1: ( rule__EntityFeature__Group_2_0_1_2__0__Impl rule__EntityFeature__Group_2_0_1_2__1 )
-            // InternalEntityGrammar.g:7869:2: rule__EntityFeature__Group_2_0_1_2__0__Impl rule__EntityFeature__Group_2_0_1_2__1
+            // InternalEntityGrammar.g:7937:1: ( rule__EntityFeature__Group_2_0_1_2__0__Impl rule__EntityFeature__Group_2_0_1_2__1 )
+            // InternalEntityGrammar.g:7938:2: rule__EntityFeature__Group_2_0_1_2__0__Impl rule__EntityFeature__Group_2_0_1_2__1
             {
             pushFollow(FOLLOW_36);
             rule__EntityFeature__Group_2_0_1_2__0__Impl();
@@ -28778,17 +29083,17 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_2__0__Impl"
-    // InternalEntityGrammar.g:7876:1: rule__EntityFeature__Group_2_0_1_2__0__Impl : ( 'filterDepth' ) ;
+    // InternalEntityGrammar.g:7945:1: rule__EntityFeature__Group_2_0_1_2__0__Impl : ( 'filterDepth' ) ;
     public final void rule__EntityFeature__Group_2_0_1_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7880:1: ( ( 'filterDepth' ) )
-            // InternalEntityGrammar.g:7881:1: ( 'filterDepth' )
+            // InternalEntityGrammar.g:7949:1: ( ( 'filterDepth' ) )
+            // InternalEntityGrammar.g:7950:1: ( 'filterDepth' )
             {
-            // InternalEntityGrammar.g:7881:1: ( 'filterDepth' )
-            // InternalEntityGrammar.g:7882:2: 'filterDepth'
+            // InternalEntityGrammar.g:7950:1: ( 'filterDepth' )
+            // InternalEntityGrammar.g:7951:2: 'filterDepth'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getFilterDepthKeyword_2_0_1_2_0()); 
@@ -28819,14 +29124,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_2__1"
-    // InternalEntityGrammar.g:7891:1: rule__EntityFeature__Group_2_0_1_2__1 : rule__EntityFeature__Group_2_0_1_2__1__Impl ;
+    // InternalEntityGrammar.g:7960:1: rule__EntityFeature__Group_2_0_1_2__1 : rule__EntityFeature__Group_2_0_1_2__1__Impl ;
     public final void rule__EntityFeature__Group_2_0_1_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7895:1: ( rule__EntityFeature__Group_2_0_1_2__1__Impl )
-            // InternalEntityGrammar.g:7896:2: rule__EntityFeature__Group_2_0_1_2__1__Impl
+            // InternalEntityGrammar.g:7964:1: ( rule__EntityFeature__Group_2_0_1_2__1__Impl )
+            // InternalEntityGrammar.g:7965:2: rule__EntityFeature__Group_2_0_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Group_2_0_1_2__1__Impl();
@@ -28852,23 +29157,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_2__1__Impl"
-    // InternalEntityGrammar.g:7902:1: rule__EntityFeature__Group_2_0_1_2__1__Impl : ( ( rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1 ) ) ;
+    // InternalEntityGrammar.g:7971:1: rule__EntityFeature__Group_2_0_1_2__1__Impl : ( ( rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1 ) ) ;
     public final void rule__EntityFeature__Group_2_0_1_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7906:1: ( ( ( rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1 ) ) )
-            // InternalEntityGrammar.g:7907:1: ( ( rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1 ) )
+            // InternalEntityGrammar.g:7975:1: ( ( ( rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1 ) ) )
+            // InternalEntityGrammar.g:7976:1: ( ( rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1 ) )
             {
-            // InternalEntityGrammar.g:7907:1: ( ( rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1 ) )
-            // InternalEntityGrammar.g:7908:2: ( rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1 )
+            // InternalEntityGrammar.g:7976:1: ( ( rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1 ) )
+            // InternalEntityGrammar.g:7977:2: ( rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getFilterDepthAssignment_2_0_1_2_1()); 
             }
-            // InternalEntityGrammar.g:7909:2: ( rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1 )
-            // InternalEntityGrammar.g:7909:3: rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1
+            // InternalEntityGrammar.g:7978:2: ( rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1 )
+            // InternalEntityGrammar.g:7978:3: rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__FilterDepthAssignment_2_0_1_2_1();
@@ -28903,14 +29208,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_5__0"
-    // InternalEntityGrammar.g:7918:1: rule__EntityFeature__Group_2_0_1_5__0 : rule__EntityFeature__Group_2_0_1_5__0__Impl rule__EntityFeature__Group_2_0_1_5__1 ;
+    // InternalEntityGrammar.g:7987:1: rule__EntityFeature__Group_2_0_1_5__0 : rule__EntityFeature__Group_2_0_1_5__0__Impl rule__EntityFeature__Group_2_0_1_5__1 ;
     public final void rule__EntityFeature__Group_2_0_1_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7922:1: ( rule__EntityFeature__Group_2_0_1_5__0__Impl rule__EntityFeature__Group_2_0_1_5__1 )
-            // InternalEntityGrammar.g:7923:2: rule__EntityFeature__Group_2_0_1_5__0__Impl rule__EntityFeature__Group_2_0_1_5__1
+            // InternalEntityGrammar.g:7991:1: ( rule__EntityFeature__Group_2_0_1_5__0__Impl rule__EntityFeature__Group_2_0_1_5__1 )
+            // InternalEntityGrammar.g:7992:2: rule__EntityFeature__Group_2_0_1_5__0__Impl rule__EntityFeature__Group_2_0_1_5__1
             {
             pushFollow(FOLLOW_37);
             rule__EntityFeature__Group_2_0_1_5__0__Impl();
@@ -28941,17 +29246,17 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_5__0__Impl"
-    // InternalEntityGrammar.g:7930:1: rule__EntityFeature__Group_2_0_1_5__0__Impl : ( '[' ) ;
+    // InternalEntityGrammar.g:7999:1: rule__EntityFeature__Group_2_0_1_5__0__Impl : ( '[' ) ;
     public final void rule__EntityFeature__Group_2_0_1_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7934:1: ( ( '[' ) )
-            // InternalEntityGrammar.g:7935:1: ( '[' )
+            // InternalEntityGrammar.g:8003:1: ( ( '[' ) )
+            // InternalEntityGrammar.g:8004:1: ( '[' )
             {
-            // InternalEntityGrammar.g:7935:1: ( '[' )
-            // InternalEntityGrammar.g:7936:2: '['
+            // InternalEntityGrammar.g:8004:1: ( '[' )
+            // InternalEntityGrammar.g:8005:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_0_1_5_0()); 
@@ -28982,14 +29287,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_5__1"
-    // InternalEntityGrammar.g:7945:1: rule__EntityFeature__Group_2_0_1_5__1 : rule__EntityFeature__Group_2_0_1_5__1__Impl rule__EntityFeature__Group_2_0_1_5__2 ;
+    // InternalEntityGrammar.g:8014:1: rule__EntityFeature__Group_2_0_1_5__1 : rule__EntityFeature__Group_2_0_1_5__1__Impl rule__EntityFeature__Group_2_0_1_5__2 ;
     public final void rule__EntityFeature__Group_2_0_1_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7949:1: ( rule__EntityFeature__Group_2_0_1_5__1__Impl rule__EntityFeature__Group_2_0_1_5__2 )
-            // InternalEntityGrammar.g:7950:2: rule__EntityFeature__Group_2_0_1_5__1__Impl rule__EntityFeature__Group_2_0_1_5__2
+            // InternalEntityGrammar.g:8018:1: ( rule__EntityFeature__Group_2_0_1_5__1__Impl rule__EntityFeature__Group_2_0_1_5__2 )
+            // InternalEntityGrammar.g:8019:2: rule__EntityFeature__Group_2_0_1_5__1__Impl rule__EntityFeature__Group_2_0_1_5__2
             {
             pushFollow(FOLLOW_37);
             rule__EntityFeature__Group_2_0_1_5__1__Impl();
@@ -29020,35 +29325,35 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_5__1__Impl"
-    // InternalEntityGrammar.g:7957:1: rule__EntityFeature__Group_2_0_1_5__1__Impl : ( ( rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1 )* ) ;
+    // InternalEntityGrammar.g:8026:1: rule__EntityFeature__Group_2_0_1_5__1__Impl : ( ( rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1 )* ) ;
     public final void rule__EntityFeature__Group_2_0_1_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7961:1: ( ( ( rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1 )* ) )
-            // InternalEntityGrammar.g:7962:1: ( ( rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1 )* )
+            // InternalEntityGrammar.g:8030:1: ( ( ( rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1 )* ) )
+            // InternalEntityGrammar.g:8031:1: ( ( rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1 )* )
             {
-            // InternalEntityGrammar.g:7962:1: ( ( rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1 )* )
-            // InternalEntityGrammar.g:7963:2: ( rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1 )*
+            // InternalEntityGrammar.g:8031:1: ( ( rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1 )* )
+            // InternalEntityGrammar.g:8032:2: ( rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_0_1_5_1()); 
             }
-            // InternalEntityGrammar.g:7964:2: ( rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1 )*
-            loop101:
+            // InternalEntityGrammar.g:8033:2: ( rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1 )*
+            loop104:
             do {
-                int alt101=2;
-                int LA101_0 = input.LA(1);
+                int alt104=2;
+                int LA104_0 = input.LA(1);
 
-                if ( (LA101_0==113||(LA101_0>=117 && LA101_0<=128)) ) {
-                    alt101=1;
+                if ( (LA104_0==113||(LA104_0>=117 && LA104_0<=128)) ) {
+                    alt104=1;
                 }
 
 
-                switch (alt101) {
+                switch (alt104) {
             	case 1 :
-            	    // InternalEntityGrammar.g:7964:3: rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1
+            	    // InternalEntityGrammar.g:8033:3: rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1
             	    {
             	    pushFollow(FOLLOW_38);
             	    rule__EntityFeature__ConstraintsAssignment_2_0_1_5_1();
@@ -29060,7 +29365,7 @@
             	    break;
 
             	default :
-            	    break loop101;
+            	    break loop104;
                 }
             } while (true);
 
@@ -29089,14 +29394,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_5__2"
-    // InternalEntityGrammar.g:7972:1: rule__EntityFeature__Group_2_0_1_5__2 : rule__EntityFeature__Group_2_0_1_5__2__Impl ;
+    // InternalEntityGrammar.g:8041:1: rule__EntityFeature__Group_2_0_1_5__2 : rule__EntityFeature__Group_2_0_1_5__2__Impl ;
     public final void rule__EntityFeature__Group_2_0_1_5__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7976:1: ( rule__EntityFeature__Group_2_0_1_5__2__Impl )
-            // InternalEntityGrammar.g:7977:2: rule__EntityFeature__Group_2_0_1_5__2__Impl
+            // InternalEntityGrammar.g:8045:1: ( rule__EntityFeature__Group_2_0_1_5__2__Impl )
+            // InternalEntityGrammar.g:8046:2: rule__EntityFeature__Group_2_0_1_5__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Group_2_0_1_5__2__Impl();
@@ -29122,17 +29427,17 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_5__2__Impl"
-    // InternalEntityGrammar.g:7983:1: rule__EntityFeature__Group_2_0_1_5__2__Impl : ( ']' ) ;
+    // InternalEntityGrammar.g:8052:1: rule__EntityFeature__Group_2_0_1_5__2__Impl : ( ']' ) ;
     public final void rule__EntityFeature__Group_2_0_1_5__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:7987:1: ( ( ']' ) )
-            // InternalEntityGrammar.g:7988:1: ( ']' )
+            // InternalEntityGrammar.g:8056:1: ( ( ']' ) )
+            // InternalEntityGrammar.g:8057:1: ( ']' )
             {
-            // InternalEntityGrammar.g:7988:1: ( ']' )
-            // InternalEntityGrammar.g:7989:2: ']'
+            // InternalEntityGrammar.g:8057:1: ( ']' )
+            // InternalEntityGrammar.g:8058:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_0_1_5_2()); 
@@ -29163,14 +29468,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_8__0"
-    // InternalEntityGrammar.g:7999:1: rule__EntityFeature__Group_2_0_1_8__0 : rule__EntityFeature__Group_2_0_1_8__0__Impl rule__EntityFeature__Group_2_0_1_8__1 ;
+    // InternalEntityGrammar.g:8068:1: rule__EntityFeature__Group_2_0_1_8__0 : rule__EntityFeature__Group_2_0_1_8__0__Impl rule__EntityFeature__Group_2_0_1_8__1 ;
     public final void rule__EntityFeature__Group_2_0_1_8__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8003:1: ( rule__EntityFeature__Group_2_0_1_8__0__Impl rule__EntityFeature__Group_2_0_1_8__1 )
-            // InternalEntityGrammar.g:8004:2: rule__EntityFeature__Group_2_0_1_8__0__Impl rule__EntityFeature__Group_2_0_1_8__1
+            // InternalEntityGrammar.g:8072:1: ( rule__EntityFeature__Group_2_0_1_8__0__Impl rule__EntityFeature__Group_2_0_1_8__1 )
+            // InternalEntityGrammar.g:8073:2: rule__EntityFeature__Group_2_0_1_8__0__Impl rule__EntityFeature__Group_2_0_1_8__1
             {
             pushFollow(FOLLOW_20);
             rule__EntityFeature__Group_2_0_1_8__0__Impl();
@@ -29201,17 +29506,17 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_8__0__Impl"
-    // InternalEntityGrammar.g:8011:1: rule__EntityFeature__Group_2_0_1_8__0__Impl : ( 'opposite' ) ;
+    // InternalEntityGrammar.g:8080:1: rule__EntityFeature__Group_2_0_1_8__0__Impl : ( 'opposite' ) ;
     public final void rule__EntityFeature__Group_2_0_1_8__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8015:1: ( ( 'opposite' ) )
-            // InternalEntityGrammar.g:8016:1: ( 'opposite' )
+            // InternalEntityGrammar.g:8084:1: ( ( 'opposite' ) )
+            // InternalEntityGrammar.g:8085:1: ( 'opposite' )
             {
-            // InternalEntityGrammar.g:8016:1: ( 'opposite' )
-            // InternalEntityGrammar.g:8017:2: 'opposite'
+            // InternalEntityGrammar.g:8085:1: ( 'opposite' )
+            // InternalEntityGrammar.g:8086:2: 'opposite'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getOppositeKeyword_2_0_1_8_0()); 
@@ -29242,20 +29547,25 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_8__1"
-    // InternalEntityGrammar.g:8026:1: rule__EntityFeature__Group_2_0_1_8__1 : rule__EntityFeature__Group_2_0_1_8__1__Impl ;
+    // InternalEntityGrammar.g:8095:1: rule__EntityFeature__Group_2_0_1_8__1 : rule__EntityFeature__Group_2_0_1_8__1__Impl rule__EntityFeature__Group_2_0_1_8__2 ;
     public final void rule__EntityFeature__Group_2_0_1_8__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8030:1: ( rule__EntityFeature__Group_2_0_1_8__1__Impl )
-            // InternalEntityGrammar.g:8031:2: rule__EntityFeature__Group_2_0_1_8__1__Impl
+            // InternalEntityGrammar.g:8099:1: ( rule__EntityFeature__Group_2_0_1_8__1__Impl rule__EntityFeature__Group_2_0_1_8__2 )
+            // InternalEntityGrammar.g:8100:2: rule__EntityFeature__Group_2_0_1_8__1__Impl rule__EntityFeature__Group_2_0_1_8__2
             {
-            pushFollow(FOLLOW_2);
+            pushFollow(FOLLOW_39);
             rule__EntityFeature__Group_2_0_1_8__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_0_1_8__2();
+
+            state._fsp--;
+            if (state.failed) return ;
 
             }
 
@@ -29275,23 +29585,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_8__1__Impl"
-    // InternalEntityGrammar.g:8037:1: rule__EntityFeature__Group_2_0_1_8__1__Impl : ( ( rule__EntityFeature__OppositeAssignment_2_0_1_8_1 ) ) ;
+    // InternalEntityGrammar.g:8107:1: rule__EntityFeature__Group_2_0_1_8__1__Impl : ( ( rule__EntityFeature__OppositeAssignment_2_0_1_8_1 ) ) ;
     public final void rule__EntityFeature__Group_2_0_1_8__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8041:1: ( ( ( rule__EntityFeature__OppositeAssignment_2_0_1_8_1 ) ) )
-            // InternalEntityGrammar.g:8042:1: ( ( rule__EntityFeature__OppositeAssignment_2_0_1_8_1 ) )
+            // InternalEntityGrammar.g:8111:1: ( ( ( rule__EntityFeature__OppositeAssignment_2_0_1_8_1 ) ) )
+            // InternalEntityGrammar.g:8112:1: ( ( rule__EntityFeature__OppositeAssignment_2_0_1_8_1 ) )
             {
-            // InternalEntityGrammar.g:8042:1: ( ( rule__EntityFeature__OppositeAssignment_2_0_1_8_1 ) )
-            // InternalEntityGrammar.g:8043:2: ( rule__EntityFeature__OppositeAssignment_2_0_1_8_1 )
+            // InternalEntityGrammar.g:8112:1: ( ( rule__EntityFeature__OppositeAssignment_2_0_1_8_1 ) )
+            // InternalEntityGrammar.g:8113:2: ( rule__EntityFeature__OppositeAssignment_2_0_1_8_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getOppositeAssignment_2_0_1_8_1()); 
             }
-            // InternalEntityGrammar.g:8044:2: ( rule__EntityFeature__OppositeAssignment_2_0_1_8_1 )
-            // InternalEntityGrammar.g:8044:3: rule__EntityFeature__OppositeAssignment_2_0_1_8_1
+            // InternalEntityGrammar.g:8114:2: ( rule__EntityFeature__OppositeAssignment_2_0_1_8_1 )
+            // InternalEntityGrammar.g:8114:3: rule__EntityFeature__OppositeAssignment_2_0_1_8_1
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__OppositeAssignment_2_0_1_8_1();
@@ -29325,17 +29635,112 @@
     // $ANTLR end "rule__EntityFeature__Group_2_0_1_8__1__Impl"
 
 
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_8__2"
+    // InternalEntityGrammar.g:8122:1: rule__EntityFeature__Group_2_0_1_8__2 : rule__EntityFeature__Group_2_0_1_8__2__Impl ;
+    public final void rule__EntityFeature__Group_2_0_1_8__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:8126:1: ( rule__EntityFeature__Group_2_0_1_8__2__Impl )
+            // InternalEntityGrammar.g:8127:2: rule__EntityFeature__Group_2_0_1_8__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_0_1_8__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_8__2"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_8__2__Impl"
+    // InternalEntityGrammar.g:8133:1: rule__EntityFeature__Group_2_0_1_8__2__Impl : ( ( rule__EntityFeature__Alternatives_2_0_1_8_2 )? ) ;
+    public final void rule__EntityFeature__Group_2_0_1_8__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:8137:1: ( ( ( rule__EntityFeature__Alternatives_2_0_1_8_2 )? ) )
+            // InternalEntityGrammar.g:8138:1: ( ( rule__EntityFeature__Alternatives_2_0_1_8_2 )? )
+            {
+            // InternalEntityGrammar.g:8138:1: ( ( rule__EntityFeature__Alternatives_2_0_1_8_2 )? )
+            // InternalEntityGrammar.g:8139:2: ( rule__EntityFeature__Alternatives_2_0_1_8_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_8_2()); 
+            }
+            // InternalEntityGrammar.g:8140:2: ( rule__EntityFeature__Alternatives_2_0_1_8_2 )?
+            int alt105=2;
+            int LA105_0 = input.LA(1);
+
+            if ( ((LA105_0>=163 && LA105_0<=164)) ) {
+                alt105=1;
+            }
+            switch (alt105) {
+                case 1 :
+                    // InternalEntityGrammar.g:8140:3: rule__EntityFeature__Alternatives_2_0_1_8_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__Alternatives_2_0_1_8_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_8_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_8__2__Impl"
+
+
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_9__0"
-    // InternalEntityGrammar.g:8053:1: rule__EntityFeature__Group_2_0_1_9__0 : rule__EntityFeature__Group_2_0_1_9__0__Impl rule__EntityFeature__Group_2_0_1_9__1 ;
+    // InternalEntityGrammar.g:8149:1: rule__EntityFeature__Group_2_0_1_9__0 : rule__EntityFeature__Group_2_0_1_9__0__Impl rule__EntityFeature__Group_2_0_1_9__1 ;
     public final void rule__EntityFeature__Group_2_0_1_9__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8057:1: ( rule__EntityFeature__Group_2_0_1_9__0__Impl rule__EntityFeature__Group_2_0_1_9__1 )
-            // InternalEntityGrammar.g:8058:2: rule__EntityFeature__Group_2_0_1_9__0__Impl rule__EntityFeature__Group_2_0_1_9__1
+            // InternalEntityGrammar.g:8153:1: ( rule__EntityFeature__Group_2_0_1_9__0__Impl rule__EntityFeature__Group_2_0_1_9__1 )
+            // InternalEntityGrammar.g:8154:2: rule__EntityFeature__Group_2_0_1_9__0__Impl rule__EntityFeature__Group_2_0_1_9__1
             {
-            pushFollow(FOLLOW_17);
+            pushFollow(FOLLOW_11);
             rule__EntityFeature__Group_2_0_1_9__0__Impl();
 
             state._fsp--;
@@ -29364,24 +29769,34 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_9__0__Impl"
-    // InternalEntityGrammar.g:8065:1: rule__EntityFeature__Group_2_0_1_9__0__Impl : ( 'properties' ) ;
+    // InternalEntityGrammar.g:8161:1: rule__EntityFeature__Group_2_0_1_9__0__Impl : ( ( rule__EntityFeature__IsGroupedAssignment_2_0_1_9_0 ) ) ;
     public final void rule__EntityFeature__Group_2_0_1_9__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8069:1: ( ( 'properties' ) )
-            // InternalEntityGrammar.g:8070:1: ( 'properties' )
+            // InternalEntityGrammar.g:8165:1: ( ( ( rule__EntityFeature__IsGroupedAssignment_2_0_1_9_0 ) ) )
+            // InternalEntityGrammar.g:8166:1: ( ( rule__EntityFeature__IsGroupedAssignment_2_0_1_9_0 ) )
             {
-            // InternalEntityGrammar.g:8070:1: ( 'properties' )
-            // InternalEntityGrammar.g:8071:2: 'properties'
+            // InternalEntityGrammar.g:8166:1: ( ( rule__EntityFeature__IsGroupedAssignment_2_0_1_9_0 ) )
+            // InternalEntityGrammar.g:8167:2: ( rule__EntityFeature__IsGroupedAssignment_2_0_1_9_0 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_0_1_9_0()); 
+               before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_0_1_9_0()); 
             }
-            match(input,102,FOLLOW_2); if (state.failed) return ;
+            // InternalEntityGrammar.g:8168:2: ( rule__EntityFeature__IsGroupedAssignment_2_0_1_9_0 )
+            // InternalEntityGrammar.g:8168:3: rule__EntityFeature__IsGroupedAssignment_2_0_1_9_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__IsGroupedAssignment_2_0_1_9_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_0_1_9_0()); 
+               after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_0_1_9_0()); 
             }
 
             }
@@ -29405,22 +29820,17 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_9__1"
-    // InternalEntityGrammar.g:8080:1: rule__EntityFeature__Group_2_0_1_9__1 : rule__EntityFeature__Group_2_0_1_9__1__Impl rule__EntityFeature__Group_2_0_1_9__2 ;
+    // InternalEntityGrammar.g:8176:1: rule__EntityFeature__Group_2_0_1_9__1 : rule__EntityFeature__Group_2_0_1_9__1__Impl ;
     public final void rule__EntityFeature__Group_2_0_1_9__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8084:1: ( rule__EntityFeature__Group_2_0_1_9__1__Impl rule__EntityFeature__Group_2_0_1_9__2 )
-            // InternalEntityGrammar.g:8085:2: rule__EntityFeature__Group_2_0_1_9__1__Impl rule__EntityFeature__Group_2_0_1_9__2
+            // InternalEntityGrammar.g:8180:1: ( rule__EntityFeature__Group_2_0_1_9__1__Impl )
+            // InternalEntityGrammar.g:8181:2: rule__EntityFeature__Group_2_0_1_9__1__Impl
             {
-            pushFollow(FOLLOW_39);
-            rule__EntityFeature__Group_2_0_1_9__1__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_0_1_9__2();
+            rule__EntityFeature__Group_2_0_1_9__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -29443,24 +29853,34 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_0_1_9__1__Impl"
-    // InternalEntityGrammar.g:8092:1: rule__EntityFeature__Group_2_0_1_9__1__Impl : ( '(' ) ;
+    // InternalEntityGrammar.g:8187:1: rule__EntityFeature__Group_2_0_1_9__1__Impl : ( ( rule__EntityFeature__GroupNameAssignment_2_0_1_9_1 ) ) ;
     public final void rule__EntityFeature__Group_2_0_1_9__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8096:1: ( ( '(' ) )
-            // InternalEntityGrammar.g:8097:1: ( '(' )
+            // InternalEntityGrammar.g:8191:1: ( ( ( rule__EntityFeature__GroupNameAssignment_2_0_1_9_1 ) ) )
+            // InternalEntityGrammar.g:8192:1: ( ( rule__EntityFeature__GroupNameAssignment_2_0_1_9_1 ) )
             {
-            // InternalEntityGrammar.g:8097:1: ( '(' )
-            // InternalEntityGrammar.g:8098:2: '('
+            // InternalEntityGrammar.g:8192:1: ( ( rule__EntityFeature__GroupNameAssignment_2_0_1_9_1 ) )
+            // InternalEntityGrammar.g:8193:2: ( rule__EntityFeature__GroupNameAssignment_2_0_1_9_1 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_0_1_9_1()); 
+               before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_0_1_9_1()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            // InternalEntityGrammar.g:8194:2: ( rule__EntityFeature__GroupNameAssignment_2_0_1_9_1 )
+            // InternalEntityGrammar.g:8194:3: rule__EntityFeature__GroupNameAssignment_2_0_1_9_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__GroupNameAssignment_2_0_1_9_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_0_1_9_1()); 
+               after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_0_1_9_1()); 
             }
 
             }
@@ -29483,23 +29903,102 @@
     // $ANTLR end "rule__EntityFeature__Group_2_0_1_9__1__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_0_1_9__2"
-    // InternalEntityGrammar.g:8107:1: rule__EntityFeature__Group_2_0_1_9__2 : rule__EntityFeature__Group_2_0_1_9__2__Impl rule__EntityFeature__Group_2_0_1_9__3 ;
-    public final void rule__EntityFeature__Group_2_0_1_9__2() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10__0"
+    // InternalEntityGrammar.g:8203:1: rule__EntityFeature__Group_2_0_1_10__0 : rule__EntityFeature__Group_2_0_1_10__0__Impl rule__EntityFeature__Group_2_0_1_10__1 ;
+    public final void rule__EntityFeature__Group_2_0_1_10__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8111:1: ( rule__EntityFeature__Group_2_0_1_9__2__Impl rule__EntityFeature__Group_2_0_1_9__3 )
-            // InternalEntityGrammar.g:8112:2: rule__EntityFeature__Group_2_0_1_9__2__Impl rule__EntityFeature__Group_2_0_1_9__3
+            // InternalEntityGrammar.g:8207:1: ( rule__EntityFeature__Group_2_0_1_10__0__Impl rule__EntityFeature__Group_2_0_1_10__1 )
+            // InternalEntityGrammar.g:8208:2: rule__EntityFeature__Group_2_0_1_10__0__Impl rule__EntityFeature__Group_2_0_1_10__1
+            {
+            pushFollow(FOLLOW_17);
+            rule__EntityFeature__Group_2_0_1_10__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_0_1_10__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10__0"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10__0__Impl"
+    // InternalEntityGrammar.g:8215:1: rule__EntityFeature__Group_2_0_1_10__0__Impl : ( 'properties' ) ;
+    public final void rule__EntityFeature__Group_2_0_1_10__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:8219:1: ( ( 'properties' ) )
+            // InternalEntityGrammar.g:8220:1: ( 'properties' )
+            {
+            // InternalEntityGrammar.g:8220:1: ( 'properties' )
+            // InternalEntityGrammar.g:8221:2: 'properties'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_0_1_10_0()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_0_1_10_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10__0__Impl"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10__1"
+    // InternalEntityGrammar.g:8230:1: rule__EntityFeature__Group_2_0_1_10__1 : rule__EntityFeature__Group_2_0_1_10__1__Impl rule__EntityFeature__Group_2_0_1_10__2 ;
+    public final void rule__EntityFeature__Group_2_0_1_10__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:8234:1: ( rule__EntityFeature__Group_2_0_1_10__1__Impl rule__EntityFeature__Group_2_0_1_10__2 )
+            // InternalEntityGrammar.g:8235:2: rule__EntityFeature__Group_2_0_1_10__1__Impl rule__EntityFeature__Group_2_0_1_10__2
             {
             pushFollow(FOLLOW_40);
-            rule__EntityFeature__Group_2_0_1_9__2__Impl();
+            rule__EntityFeature__Group_2_0_1_10__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_0_1_9__3();
+            rule__EntityFeature__Group_2_0_1_10__2();
 
             state._fsp--;
             if (state.failed) return ;
@@ -29518,38 +30017,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_0_1_9__2"
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10__1"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_0_1_9__2__Impl"
-    // InternalEntityGrammar.g:8119:1: rule__EntityFeature__Group_2_0_1_9__2__Impl : ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_9_2 ) ) ;
-    public final void rule__EntityFeature__Group_2_0_1_9__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10__1__Impl"
+    // InternalEntityGrammar.g:8242:1: rule__EntityFeature__Group_2_0_1_10__1__Impl : ( '(' ) ;
+    public final void rule__EntityFeature__Group_2_0_1_10__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8123:1: ( ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_9_2 ) ) )
-            // InternalEntityGrammar.g:8124:1: ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_9_2 ) )
+            // InternalEntityGrammar.g:8246:1: ( ( '(' ) )
+            // InternalEntityGrammar.g:8247:1: ( '(' )
             {
-            // InternalEntityGrammar.g:8124:1: ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_9_2 ) )
-            // InternalEntityGrammar.g:8125:2: ( rule__EntityFeature__PropertiesAssignment_2_0_1_9_2 )
+            // InternalEntityGrammar.g:8247:1: ( '(' )
+            // InternalEntityGrammar.g:8248:2: '('
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_9_2()); 
+               before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_0_1_10_1()); 
             }
-            // InternalEntityGrammar.g:8126:2: ( rule__EntityFeature__PropertiesAssignment_2_0_1_9_2 )
-            // InternalEntityGrammar.g:8126:3: rule__EntityFeature__PropertiesAssignment_2_0_1_9_2
-            {
-            pushFollow(FOLLOW_2);
-            rule__EntityFeature__PropertiesAssignment_2_0_1_9_2();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
+            match(input,90,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_9_2()); 
+               after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_0_1_10_1()); 
             }
 
             }
@@ -29569,26 +30058,26 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_0_1_9__2__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10__1__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_0_1_9__3"
-    // InternalEntityGrammar.g:8134:1: rule__EntityFeature__Group_2_0_1_9__3 : rule__EntityFeature__Group_2_0_1_9__3__Impl rule__EntityFeature__Group_2_0_1_9__4 ;
-    public final void rule__EntityFeature__Group_2_0_1_9__3() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10__2"
+    // InternalEntityGrammar.g:8257:1: rule__EntityFeature__Group_2_0_1_10__2 : rule__EntityFeature__Group_2_0_1_10__2__Impl rule__EntityFeature__Group_2_0_1_10__3 ;
+    public final void rule__EntityFeature__Group_2_0_1_10__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8138:1: ( rule__EntityFeature__Group_2_0_1_9__3__Impl rule__EntityFeature__Group_2_0_1_9__4 )
-            // InternalEntityGrammar.g:8139:2: rule__EntityFeature__Group_2_0_1_9__3__Impl rule__EntityFeature__Group_2_0_1_9__4
+            // InternalEntityGrammar.g:8261:1: ( rule__EntityFeature__Group_2_0_1_10__2__Impl rule__EntityFeature__Group_2_0_1_10__3 )
+            // InternalEntityGrammar.g:8262:2: rule__EntityFeature__Group_2_0_1_10__2__Impl rule__EntityFeature__Group_2_0_1_10__3
             {
-            pushFollow(FOLLOW_40);
-            rule__EntityFeature__Group_2_0_1_9__3__Impl();
+            pushFollow(FOLLOW_41);
+            rule__EntityFeature__Group_2_0_1_10__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_0_1_9__4();
+            rule__EntityFeature__Group_2_0_1_10__3();
 
             state._fsp--;
             if (state.failed) return ;
@@ -29607,42 +30096,131 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_0_1_9__3"
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10__2"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_0_1_9__3__Impl"
-    // InternalEntityGrammar.g:8146:1: rule__EntityFeature__Group_2_0_1_9__3__Impl : ( ( rule__EntityFeature__Group_2_0_1_9_3__0 )* ) ;
-    public final void rule__EntityFeature__Group_2_0_1_9__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10__2__Impl"
+    // InternalEntityGrammar.g:8269:1: rule__EntityFeature__Group_2_0_1_10__2__Impl : ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_10_2 ) ) ;
+    public final void rule__EntityFeature__Group_2_0_1_10__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8150:1: ( ( ( rule__EntityFeature__Group_2_0_1_9_3__0 )* ) )
-            // InternalEntityGrammar.g:8151:1: ( ( rule__EntityFeature__Group_2_0_1_9_3__0 )* )
+            // InternalEntityGrammar.g:8273:1: ( ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_10_2 ) ) )
+            // InternalEntityGrammar.g:8274:1: ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_10_2 ) )
             {
-            // InternalEntityGrammar.g:8151:1: ( ( rule__EntityFeature__Group_2_0_1_9_3__0 )* )
-            // InternalEntityGrammar.g:8152:2: ( rule__EntityFeature__Group_2_0_1_9_3__0 )*
+            // InternalEntityGrammar.g:8274:1: ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_10_2 ) )
+            // InternalEntityGrammar.g:8275:2: ( rule__EntityFeature__PropertiesAssignment_2_0_1_10_2 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_9_3()); 
+               before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_10_2()); 
             }
-            // InternalEntityGrammar.g:8153:2: ( rule__EntityFeature__Group_2_0_1_9_3__0 )*
-            loop102:
+            // InternalEntityGrammar.g:8276:2: ( rule__EntityFeature__PropertiesAssignment_2_0_1_10_2 )
+            // InternalEntityGrammar.g:8276:3: rule__EntityFeature__PropertiesAssignment_2_0_1_10_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__PropertiesAssignment_2_0_1_10_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_10_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10__2__Impl"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10__3"
+    // InternalEntityGrammar.g:8284:1: rule__EntityFeature__Group_2_0_1_10__3 : rule__EntityFeature__Group_2_0_1_10__3__Impl rule__EntityFeature__Group_2_0_1_10__4 ;
+    public final void rule__EntityFeature__Group_2_0_1_10__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:8288:1: ( rule__EntityFeature__Group_2_0_1_10__3__Impl rule__EntityFeature__Group_2_0_1_10__4 )
+            // InternalEntityGrammar.g:8289:2: rule__EntityFeature__Group_2_0_1_10__3__Impl rule__EntityFeature__Group_2_0_1_10__4
+            {
+            pushFollow(FOLLOW_41);
+            rule__EntityFeature__Group_2_0_1_10__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_0_1_10__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10__3"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10__3__Impl"
+    // InternalEntityGrammar.g:8296:1: rule__EntityFeature__Group_2_0_1_10__3__Impl : ( ( rule__EntityFeature__Group_2_0_1_10_3__0 )* ) ;
+    public final void rule__EntityFeature__Group_2_0_1_10__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:8300:1: ( ( ( rule__EntityFeature__Group_2_0_1_10_3__0 )* ) )
+            // InternalEntityGrammar.g:8301:1: ( ( rule__EntityFeature__Group_2_0_1_10_3__0 )* )
+            {
+            // InternalEntityGrammar.g:8301:1: ( ( rule__EntityFeature__Group_2_0_1_10_3__0 )* )
+            // InternalEntityGrammar.g:8302:2: ( rule__EntityFeature__Group_2_0_1_10_3__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_10_3()); 
+            }
+            // InternalEntityGrammar.g:8303:2: ( rule__EntityFeature__Group_2_0_1_10_3__0 )*
+            loop106:
             do {
-                int alt102=2;
-                int LA102_0 = input.LA(1);
+                int alt106=2;
+                int LA106_0 = input.LA(1);
 
-                if ( (LA102_0==95) ) {
-                    alt102=1;
+                if ( (LA106_0==95) ) {
+                    alt106=1;
                 }
 
 
-                switch (alt102) {
+                switch (alt106) {
             	case 1 :
-            	    // InternalEntityGrammar.g:8153:3: rule__EntityFeature__Group_2_0_1_9_3__0
+            	    // InternalEntityGrammar.g:8303:3: rule__EntityFeature__Group_2_0_1_10_3__0
             	    {
             	    pushFollow(FOLLOW_30);
-            	    rule__EntityFeature__Group_2_0_1_9_3__0();
+            	    rule__EntityFeature__Group_2_0_1_10_3__0();
 
             	    state._fsp--;
             	    if (state.failed) return ;
@@ -29651,12 +30229,12 @@
             	    break;
 
             	default :
-            	    break loop102;
+            	    break loop106;
                 }
             } while (true);
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_9_3()); 
+               after(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_10_3()); 
             }
 
             }
@@ -29676,21 +30254,21 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_0_1_9__3__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10__3__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_0_1_9__4"
-    // InternalEntityGrammar.g:8161:1: rule__EntityFeature__Group_2_0_1_9__4 : rule__EntityFeature__Group_2_0_1_9__4__Impl ;
-    public final void rule__EntityFeature__Group_2_0_1_9__4() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10__4"
+    // InternalEntityGrammar.g:8311:1: rule__EntityFeature__Group_2_0_1_10__4 : rule__EntityFeature__Group_2_0_1_10__4__Impl ;
+    public final void rule__EntityFeature__Group_2_0_1_10__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8165:1: ( rule__EntityFeature__Group_2_0_1_9__4__Impl )
-            // InternalEntityGrammar.g:8166:2: rule__EntityFeature__Group_2_0_1_9__4__Impl
+            // InternalEntityGrammar.g:8315:1: ( rule__EntityFeature__Group_2_0_1_10__4__Impl )
+            // InternalEntityGrammar.g:8316:2: rule__EntityFeature__Group_2_0_1_10__4__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_0_1_9__4__Impl();
+            rule__EntityFeature__Group_2_0_1_10__4__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -29709,28 +30287,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_0_1_9__4"
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10__4"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_0_1_9__4__Impl"
-    // InternalEntityGrammar.g:8172:1: rule__EntityFeature__Group_2_0_1_9__4__Impl : ( ')' ) ;
-    public final void rule__EntityFeature__Group_2_0_1_9__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10__4__Impl"
+    // InternalEntityGrammar.g:8322:1: rule__EntityFeature__Group_2_0_1_10__4__Impl : ( ')' ) ;
+    public final void rule__EntityFeature__Group_2_0_1_10__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8176:1: ( ( ')' ) )
-            // InternalEntityGrammar.g:8177:1: ( ')' )
+            // InternalEntityGrammar.g:8326:1: ( ( ')' ) )
+            // InternalEntityGrammar.g:8327:1: ( ')' )
             {
-            // InternalEntityGrammar.g:8177:1: ( ')' )
-            // InternalEntityGrammar.g:8178:2: ')'
+            // InternalEntityGrammar.g:8327:1: ( ')' )
+            // InternalEntityGrammar.g:8328:2: ')'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_0_1_9_4()); 
+               before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_0_1_10_4()); 
             }
             match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_0_1_9_4()); 
+               after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_0_1_10_4()); 
             }
 
             }
@@ -29750,26 +30328,26 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_0_1_9__4__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10__4__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_0_1_9_3__0"
-    // InternalEntityGrammar.g:8188:1: rule__EntityFeature__Group_2_0_1_9_3__0 : rule__EntityFeature__Group_2_0_1_9_3__0__Impl rule__EntityFeature__Group_2_0_1_9_3__1 ;
-    public final void rule__EntityFeature__Group_2_0_1_9_3__0() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10_3__0"
+    // InternalEntityGrammar.g:8338:1: rule__EntityFeature__Group_2_0_1_10_3__0 : rule__EntityFeature__Group_2_0_1_10_3__0__Impl rule__EntityFeature__Group_2_0_1_10_3__1 ;
+    public final void rule__EntityFeature__Group_2_0_1_10_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8192:1: ( rule__EntityFeature__Group_2_0_1_9_3__0__Impl rule__EntityFeature__Group_2_0_1_9_3__1 )
-            // InternalEntityGrammar.g:8193:2: rule__EntityFeature__Group_2_0_1_9_3__0__Impl rule__EntityFeature__Group_2_0_1_9_3__1
+            // InternalEntityGrammar.g:8342:1: ( rule__EntityFeature__Group_2_0_1_10_3__0__Impl rule__EntityFeature__Group_2_0_1_10_3__1 )
+            // InternalEntityGrammar.g:8343:2: rule__EntityFeature__Group_2_0_1_10_3__0__Impl rule__EntityFeature__Group_2_0_1_10_3__1
             {
-            pushFollow(FOLLOW_39);
-            rule__EntityFeature__Group_2_0_1_9_3__0__Impl();
+            pushFollow(FOLLOW_40);
+            rule__EntityFeature__Group_2_0_1_10_3__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_0_1_9_3__1();
+            rule__EntityFeature__Group_2_0_1_10_3__1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -29788,28 +30366,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_0_1_9_3__0"
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10_3__0"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_0_1_9_3__0__Impl"
-    // InternalEntityGrammar.g:8200:1: rule__EntityFeature__Group_2_0_1_9_3__0__Impl : ( ',' ) ;
-    public final void rule__EntityFeature__Group_2_0_1_9_3__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10_3__0__Impl"
+    // InternalEntityGrammar.g:8350:1: rule__EntityFeature__Group_2_0_1_10_3__0__Impl : ( ',' ) ;
+    public final void rule__EntityFeature__Group_2_0_1_10_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8204:1: ( ( ',' ) )
-            // InternalEntityGrammar.g:8205:1: ( ',' )
+            // InternalEntityGrammar.g:8354:1: ( ( ',' ) )
+            // InternalEntityGrammar.g:8355:1: ( ',' )
             {
-            // InternalEntityGrammar.g:8205:1: ( ',' )
-            // InternalEntityGrammar.g:8206:2: ','
+            // InternalEntityGrammar.g:8355:1: ( ',' )
+            // InternalEntityGrammar.g:8356:2: ','
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_0_1_9_3_0()); 
+               before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_0_1_10_3_0()); 
             }
             match(input,95,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_0_1_9_3_0()); 
+               after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_0_1_10_3_0()); 
             }
 
             }
@@ -29829,21 +30407,21 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_0_1_9_3__0__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10_3__0__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_0_1_9_3__1"
-    // InternalEntityGrammar.g:8215:1: rule__EntityFeature__Group_2_0_1_9_3__1 : rule__EntityFeature__Group_2_0_1_9_3__1__Impl ;
-    public final void rule__EntityFeature__Group_2_0_1_9_3__1() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10_3__1"
+    // InternalEntityGrammar.g:8365:1: rule__EntityFeature__Group_2_0_1_10_3__1 : rule__EntityFeature__Group_2_0_1_10_3__1__Impl ;
+    public final void rule__EntityFeature__Group_2_0_1_10_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8219:1: ( rule__EntityFeature__Group_2_0_1_9_3__1__Impl )
-            // InternalEntityGrammar.g:8220:2: rule__EntityFeature__Group_2_0_1_9_3__1__Impl
+            // InternalEntityGrammar.g:8369:1: ( rule__EntityFeature__Group_2_0_1_10_3__1__Impl )
+            // InternalEntityGrammar.g:8370:2: rule__EntityFeature__Group_2_0_1_10_3__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_0_1_9_3__1__Impl();
+            rule__EntityFeature__Group_2_0_1_10_3__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -29862,30 +30440,30 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_0_1_9_3__1"
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10_3__1"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_0_1_9_3__1__Impl"
-    // InternalEntityGrammar.g:8226:1: rule__EntityFeature__Group_2_0_1_9_3__1__Impl : ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_9_3_1 ) ) ;
-    public final void rule__EntityFeature__Group_2_0_1_9_3__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_0_1_10_3__1__Impl"
+    // InternalEntityGrammar.g:8376:1: rule__EntityFeature__Group_2_0_1_10_3__1__Impl : ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_10_3_1 ) ) ;
+    public final void rule__EntityFeature__Group_2_0_1_10_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8230:1: ( ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_9_3_1 ) ) )
-            // InternalEntityGrammar.g:8231:1: ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_9_3_1 ) )
+            // InternalEntityGrammar.g:8380:1: ( ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_10_3_1 ) ) )
+            // InternalEntityGrammar.g:8381:1: ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_10_3_1 ) )
             {
-            // InternalEntityGrammar.g:8231:1: ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_9_3_1 ) )
-            // InternalEntityGrammar.g:8232:2: ( rule__EntityFeature__PropertiesAssignment_2_0_1_9_3_1 )
+            // InternalEntityGrammar.g:8381:1: ( ( rule__EntityFeature__PropertiesAssignment_2_0_1_10_3_1 ) )
+            // InternalEntityGrammar.g:8382:2: ( rule__EntityFeature__PropertiesAssignment_2_0_1_10_3_1 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_9_3_1()); 
+               before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_10_3_1()); 
             }
-            // InternalEntityGrammar.g:8233:2: ( rule__EntityFeature__PropertiesAssignment_2_0_1_9_3_1 )
-            // InternalEntityGrammar.g:8233:3: rule__EntityFeature__PropertiesAssignment_2_0_1_9_3_1
+            // InternalEntityGrammar.g:8383:2: ( rule__EntityFeature__PropertiesAssignment_2_0_1_10_3_1 )
+            // InternalEntityGrammar.g:8383:3: rule__EntityFeature__PropertiesAssignment_2_0_1_10_3_1
             {
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__PropertiesAssignment_2_0_1_9_3_1();
+            rule__EntityFeature__PropertiesAssignment_2_0_1_10_3_1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -29893,7 +30471,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_9_3_1()); 
+               after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_10_3_1()); 
             }
 
             }
@@ -29913,20 +30491,20 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_0_1_9_3__1__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_0_1_10_3__1__Impl"
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1__0"
-    // InternalEntityGrammar.g:8242:1: rule__EntityFeature__Group_2_1__0 : rule__EntityFeature__Group_2_1__0__Impl rule__EntityFeature__Group_2_1__1 ;
+    // InternalEntityGrammar.g:8392:1: rule__EntityFeature__Group_2_1__0 : rule__EntityFeature__Group_2_1__0__Impl rule__EntityFeature__Group_2_1__1 ;
     public final void rule__EntityFeature__Group_2_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8246:1: ( rule__EntityFeature__Group_2_1__0__Impl rule__EntityFeature__Group_2_1__1 )
-            // InternalEntityGrammar.g:8247:2: rule__EntityFeature__Group_2_1__0__Impl rule__EntityFeature__Group_2_1__1
+            // InternalEntityGrammar.g:8396:1: ( rule__EntityFeature__Group_2_1__0__Impl rule__EntityFeature__Group_2_1__1 )
+            // InternalEntityGrammar.g:8397:2: rule__EntityFeature__Group_2_1__0__Impl rule__EntityFeature__Group_2_1__1
             {
-            pushFollow(FOLLOW_41);
+            pushFollow(FOLLOW_42);
             rule__EntityFeature__Group_2_1__0__Impl();
 
             state._fsp--;
@@ -29955,23 +30533,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1__0__Impl"
-    // InternalEntityGrammar.g:8254:1: rule__EntityFeature__Group_2_1__0__Impl : ( () ) ;
+    // InternalEntityGrammar.g:8404:1: rule__EntityFeature__Group_2_1__0__Impl : ( () ) ;
     public final void rule__EntityFeature__Group_2_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8258:1: ( ( () ) )
-            // InternalEntityGrammar.g:8259:1: ( () )
+            // InternalEntityGrammar.g:8408:1: ( ( () ) )
+            // InternalEntityGrammar.g:8409:1: ( () )
             {
-            // InternalEntityGrammar.g:8259:1: ( () )
-            // InternalEntityGrammar.g:8260:2: ()
+            // InternalEntityGrammar.g:8409:1: ( () )
+            // InternalEntityGrammar.g:8410:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getLEntityAttributeAnnotationInfoAction_2_1_0()); 
             }
-            // InternalEntityGrammar.g:8261:2: ()
-            // InternalEntityGrammar.g:8261:3: 
+            // InternalEntityGrammar.g:8411:2: ()
+            // InternalEntityGrammar.g:8411:3: 
             {
             }
 
@@ -29996,14 +30574,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1__1"
-    // InternalEntityGrammar.g:8269:1: rule__EntityFeature__Group_2_1__1 : rule__EntityFeature__Group_2_1__1__Impl ;
+    // InternalEntityGrammar.g:8419:1: rule__EntityFeature__Group_2_1__1 : rule__EntityFeature__Group_2_1__1__Impl ;
     public final void rule__EntityFeature__Group_2_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8273:1: ( rule__EntityFeature__Group_2_1__1__Impl )
-            // InternalEntityGrammar.g:8274:2: rule__EntityFeature__Group_2_1__1__Impl
+            // InternalEntityGrammar.g:8423:1: ( rule__EntityFeature__Group_2_1__1__Impl )
+            // InternalEntityGrammar.g:8424:2: rule__EntityFeature__Group_2_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Group_2_1__1__Impl();
@@ -30029,23 +30607,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1__1__Impl"
-    // InternalEntityGrammar.g:8280:1: rule__EntityFeature__Group_2_1__1__Impl : ( ( rule__EntityFeature__Alternatives_2_1_1 ) ) ;
+    // InternalEntityGrammar.g:8430:1: rule__EntityFeature__Group_2_1__1__Impl : ( ( rule__EntityFeature__Alternatives_2_1_1 ) ) ;
     public final void rule__EntityFeature__Group_2_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8284:1: ( ( ( rule__EntityFeature__Alternatives_2_1_1 ) ) )
-            // InternalEntityGrammar.g:8285:1: ( ( rule__EntityFeature__Alternatives_2_1_1 ) )
+            // InternalEntityGrammar.g:8434:1: ( ( ( rule__EntityFeature__Alternatives_2_1_1 ) ) )
+            // InternalEntityGrammar.g:8435:1: ( ( rule__EntityFeature__Alternatives_2_1_1 ) )
             {
-            // InternalEntityGrammar.g:8285:1: ( ( rule__EntityFeature__Alternatives_2_1_1 ) )
-            // InternalEntityGrammar.g:8286:2: ( rule__EntityFeature__Alternatives_2_1_1 )
+            // InternalEntityGrammar.g:8435:1: ( ( rule__EntityFeature__Alternatives_2_1_1 ) )
+            // InternalEntityGrammar.g:8436:2: ( rule__EntityFeature__Alternatives_2_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1()); 
             }
-            // InternalEntityGrammar.g:8287:2: ( rule__EntityFeature__Alternatives_2_1_1 )
-            // InternalEntityGrammar.g:8287:3: rule__EntityFeature__Alternatives_2_1_1
+            // InternalEntityGrammar.g:8437:2: ( rule__EntityFeature__Alternatives_2_1_1 )
+            // InternalEntityGrammar.g:8437:3: rule__EntityFeature__Alternatives_2_1_1
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Alternatives_2_1_1();
@@ -30080,14 +30658,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0__0"
-    // InternalEntityGrammar.g:8296:1: rule__EntityFeature__Group_2_1_1_0__0 : rule__EntityFeature__Group_2_1_1_0__0__Impl rule__EntityFeature__Group_2_1_1_0__1 ;
+    // InternalEntityGrammar.g:8446:1: rule__EntityFeature__Group_2_1_1_0__0 : rule__EntityFeature__Group_2_1_1_0__0__Impl rule__EntityFeature__Group_2_1_1_0__1 ;
     public final void rule__EntityFeature__Group_2_1_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8300:1: ( rule__EntityFeature__Group_2_1_1_0__0__Impl rule__EntityFeature__Group_2_1_1_0__1 )
-            // InternalEntityGrammar.g:8301:2: rule__EntityFeature__Group_2_1_1_0__0__Impl rule__EntityFeature__Group_2_1_1_0__1
+            // InternalEntityGrammar.g:8450:1: ( rule__EntityFeature__Group_2_1_1_0__0__Impl rule__EntityFeature__Group_2_1_1_0__1 )
+            // InternalEntityGrammar.g:8451:2: rule__EntityFeature__Group_2_1_1_0__0__Impl rule__EntityFeature__Group_2_1_1_0__1
             {
             pushFollow(FOLLOW_20);
             rule__EntityFeature__Group_2_1_1_0__0__Impl();
@@ -30118,23 +30696,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0__0__Impl"
-    // InternalEntityGrammar.g:8308:1: rule__EntityFeature__Group_2_1_1_0__0__Impl : ( ( rule__EntityFeature__TransientAssignment_2_1_1_0_0 ) ) ;
+    // InternalEntityGrammar.g:8458:1: rule__EntityFeature__Group_2_1_1_0__0__Impl : ( ( rule__EntityFeature__TransientAssignment_2_1_1_0_0 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8312:1: ( ( ( rule__EntityFeature__TransientAssignment_2_1_1_0_0 ) ) )
-            // InternalEntityGrammar.g:8313:1: ( ( rule__EntityFeature__TransientAssignment_2_1_1_0_0 ) )
+            // InternalEntityGrammar.g:8462:1: ( ( ( rule__EntityFeature__TransientAssignment_2_1_1_0_0 ) ) )
+            // InternalEntityGrammar.g:8463:1: ( ( rule__EntityFeature__TransientAssignment_2_1_1_0_0 ) )
             {
-            // InternalEntityGrammar.g:8313:1: ( ( rule__EntityFeature__TransientAssignment_2_1_1_0_0 ) )
-            // InternalEntityGrammar.g:8314:2: ( rule__EntityFeature__TransientAssignment_2_1_1_0_0 )
+            // InternalEntityGrammar.g:8463:1: ( ( rule__EntityFeature__TransientAssignment_2_1_1_0_0 ) )
+            // InternalEntityGrammar.g:8464:2: ( rule__EntityFeature__TransientAssignment_2_1_1_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getTransientAssignment_2_1_1_0_0()); 
             }
-            // InternalEntityGrammar.g:8315:2: ( rule__EntityFeature__TransientAssignment_2_1_1_0_0 )
-            // InternalEntityGrammar.g:8315:3: rule__EntityFeature__TransientAssignment_2_1_1_0_0
+            // InternalEntityGrammar.g:8465:2: ( rule__EntityFeature__TransientAssignment_2_1_1_0_0 )
+            // InternalEntityGrammar.g:8465:3: rule__EntityFeature__TransientAssignment_2_1_1_0_0
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__TransientAssignment_2_1_1_0_0();
@@ -30169,14 +30747,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0__1"
-    // InternalEntityGrammar.g:8323:1: rule__EntityFeature__Group_2_1_1_0__1 : rule__EntityFeature__Group_2_1_1_0__1__Impl rule__EntityFeature__Group_2_1_1_0__2 ;
+    // InternalEntityGrammar.g:8473:1: rule__EntityFeature__Group_2_1_1_0__1 : rule__EntityFeature__Group_2_1_1_0__1__Impl rule__EntityFeature__Group_2_1_1_0__2 ;
     public final void rule__EntityFeature__Group_2_1_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8327:1: ( rule__EntityFeature__Group_2_1_1_0__1__Impl rule__EntityFeature__Group_2_1_1_0__2 )
-            // InternalEntityGrammar.g:8328:2: rule__EntityFeature__Group_2_1_1_0__1__Impl rule__EntityFeature__Group_2_1_1_0__2
+            // InternalEntityGrammar.g:8477:1: ( rule__EntityFeature__Group_2_1_1_0__1__Impl rule__EntityFeature__Group_2_1_1_0__2 )
+            // InternalEntityGrammar.g:8478:2: rule__EntityFeature__Group_2_1_1_0__1__Impl rule__EntityFeature__Group_2_1_1_0__2
             {
             pushFollow(FOLLOW_34);
             rule__EntityFeature__Group_2_1_1_0__1__Impl();
@@ -30207,23 +30785,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0__1__Impl"
-    // InternalEntityGrammar.g:8335:1: rule__EntityFeature__Group_2_1_1_0__1__Impl : ( ( rule__EntityFeature__TypeAssignment_2_1_1_0_1 ) ) ;
+    // InternalEntityGrammar.g:8485:1: rule__EntityFeature__Group_2_1_1_0__1__Impl : ( ( rule__EntityFeature__TypeAssignment_2_1_1_0_1 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8339:1: ( ( ( rule__EntityFeature__TypeAssignment_2_1_1_0_1 ) ) )
-            // InternalEntityGrammar.g:8340:1: ( ( rule__EntityFeature__TypeAssignment_2_1_1_0_1 ) )
+            // InternalEntityGrammar.g:8489:1: ( ( ( rule__EntityFeature__TypeAssignment_2_1_1_0_1 ) ) )
+            // InternalEntityGrammar.g:8490:1: ( ( rule__EntityFeature__TypeAssignment_2_1_1_0_1 ) )
             {
-            // InternalEntityGrammar.g:8340:1: ( ( rule__EntityFeature__TypeAssignment_2_1_1_0_1 ) )
-            // InternalEntityGrammar.g:8341:2: ( rule__EntityFeature__TypeAssignment_2_1_1_0_1 )
+            // InternalEntityGrammar.g:8490:1: ( ( rule__EntityFeature__TypeAssignment_2_1_1_0_1 ) )
+            // InternalEntityGrammar.g:8491:2: ( rule__EntityFeature__TypeAssignment_2_1_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_0_1()); 
             }
-            // InternalEntityGrammar.g:8342:2: ( rule__EntityFeature__TypeAssignment_2_1_1_0_1 )
-            // InternalEntityGrammar.g:8342:3: rule__EntityFeature__TypeAssignment_2_1_1_0_1
+            // InternalEntityGrammar.g:8492:2: ( rule__EntityFeature__TypeAssignment_2_1_1_0_1 )
+            // InternalEntityGrammar.g:8492:3: rule__EntityFeature__TypeAssignment_2_1_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__TypeAssignment_2_1_1_0_1();
@@ -30258,14 +30836,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0__2"
-    // InternalEntityGrammar.g:8350:1: rule__EntityFeature__Group_2_1_1_0__2 : rule__EntityFeature__Group_2_1_1_0__2__Impl rule__EntityFeature__Group_2_1_1_0__3 ;
+    // InternalEntityGrammar.g:8500:1: rule__EntityFeature__Group_2_1_1_0__2 : rule__EntityFeature__Group_2_1_1_0__2__Impl rule__EntityFeature__Group_2_1_1_0__3 ;
     public final void rule__EntityFeature__Group_2_1_1_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8354:1: ( rule__EntityFeature__Group_2_1_1_0__2__Impl rule__EntityFeature__Group_2_1_1_0__3 )
-            // InternalEntityGrammar.g:8355:2: rule__EntityFeature__Group_2_1_1_0__2__Impl rule__EntityFeature__Group_2_1_1_0__3
+            // InternalEntityGrammar.g:8504:1: ( rule__EntityFeature__Group_2_1_1_0__2__Impl rule__EntityFeature__Group_2_1_1_0__3 )
+            // InternalEntityGrammar.g:8505:2: rule__EntityFeature__Group_2_1_1_0__2__Impl rule__EntityFeature__Group_2_1_1_0__3
             {
             pushFollow(FOLLOW_34);
             rule__EntityFeature__Group_2_1_1_0__2__Impl();
@@ -30296,31 +30874,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0__2__Impl"
-    // InternalEntityGrammar.g:8362:1: rule__EntityFeature__Group_2_1_1_0__2__Impl : ( ( rule__EntityFeature__Group_2_1_1_0_2__0 )? ) ;
+    // InternalEntityGrammar.g:8512:1: rule__EntityFeature__Group_2_1_1_0__2__Impl : ( ( rule__EntityFeature__Group_2_1_1_0_2__0 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8366:1: ( ( ( rule__EntityFeature__Group_2_1_1_0_2__0 )? ) )
-            // InternalEntityGrammar.g:8367:1: ( ( rule__EntityFeature__Group_2_1_1_0_2__0 )? )
+            // InternalEntityGrammar.g:8516:1: ( ( ( rule__EntityFeature__Group_2_1_1_0_2__0 )? ) )
+            // InternalEntityGrammar.g:8517:1: ( ( rule__EntityFeature__Group_2_1_1_0_2__0 )? )
             {
-            // InternalEntityGrammar.g:8367:1: ( ( rule__EntityFeature__Group_2_1_1_0_2__0 )? )
-            // InternalEntityGrammar.g:8368:2: ( rule__EntityFeature__Group_2_1_1_0_2__0 )?
+            // InternalEntityGrammar.g:8517:1: ( ( rule__EntityFeature__Group_2_1_1_0_2__0 )? )
+            // InternalEntityGrammar.g:8518:2: ( rule__EntityFeature__Group_2_1_1_0_2__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_2()); 
             }
-            // InternalEntityGrammar.g:8369:2: ( rule__EntityFeature__Group_2_1_1_0_2__0 )?
-            int alt103=2;
-            int LA103_0 = input.LA(1);
+            // InternalEntityGrammar.g:8519:2: ( rule__EntityFeature__Group_2_1_1_0_2__0 )?
+            int alt107=2;
+            int LA107_0 = input.LA(1);
 
-            if ( (LA103_0==99) ) {
-                alt103=1;
+            if ( (LA107_0==99) ) {
+                alt107=1;
             }
-            switch (alt103) {
+            switch (alt107) {
                 case 1 :
-                    // InternalEntityGrammar.g:8369:3: rule__EntityFeature__Group_2_1_1_0_2__0
+                    // InternalEntityGrammar.g:8519:3: rule__EntityFeature__Group_2_1_1_0_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_0_2__0();
@@ -30358,16 +30936,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0__3"
-    // InternalEntityGrammar.g:8377:1: rule__EntityFeature__Group_2_1_1_0__3 : rule__EntityFeature__Group_2_1_1_0__3__Impl rule__EntityFeature__Group_2_1_1_0__4 ;
+    // InternalEntityGrammar.g:8527:1: rule__EntityFeature__Group_2_1_1_0__3 : rule__EntityFeature__Group_2_1_1_0__3__Impl rule__EntityFeature__Group_2_1_1_0__4 ;
     public final void rule__EntityFeature__Group_2_1_1_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8381:1: ( rule__EntityFeature__Group_2_1_1_0__3__Impl rule__EntityFeature__Group_2_1_1_0__4 )
-            // InternalEntityGrammar.g:8382:2: rule__EntityFeature__Group_2_1_1_0__3__Impl rule__EntityFeature__Group_2_1_1_0__4
+            // InternalEntityGrammar.g:8531:1: ( rule__EntityFeature__Group_2_1_1_0__3__Impl rule__EntityFeature__Group_2_1_1_0__4 )
+            // InternalEntityGrammar.g:8532:2: rule__EntityFeature__Group_2_1_1_0__3__Impl rule__EntityFeature__Group_2_1_1_0__4
             {
-            pushFollow(FOLLOW_42);
+            pushFollow(FOLLOW_43);
             rule__EntityFeature__Group_2_1_1_0__3__Impl();
 
             state._fsp--;
@@ -30396,23 +30974,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0__3__Impl"
-    // InternalEntityGrammar.g:8389:1: rule__EntityFeature__Group_2_1_1_0__3__Impl : ( ( rule__EntityFeature__NameAssignment_2_1_1_0_3 ) ) ;
+    // InternalEntityGrammar.g:8539:1: rule__EntityFeature__Group_2_1_1_0__3__Impl : ( ( rule__EntityFeature__NameAssignment_2_1_1_0_3 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8393:1: ( ( ( rule__EntityFeature__NameAssignment_2_1_1_0_3 ) ) )
-            // InternalEntityGrammar.g:8394:1: ( ( rule__EntityFeature__NameAssignment_2_1_1_0_3 ) )
+            // InternalEntityGrammar.g:8543:1: ( ( ( rule__EntityFeature__NameAssignment_2_1_1_0_3 ) ) )
+            // InternalEntityGrammar.g:8544:1: ( ( rule__EntityFeature__NameAssignment_2_1_1_0_3 ) )
             {
-            // InternalEntityGrammar.g:8394:1: ( ( rule__EntityFeature__NameAssignment_2_1_1_0_3 ) )
-            // InternalEntityGrammar.g:8395:2: ( rule__EntityFeature__NameAssignment_2_1_1_0_3 )
+            // InternalEntityGrammar.g:8544:1: ( ( rule__EntityFeature__NameAssignment_2_1_1_0_3 ) )
+            // InternalEntityGrammar.g:8545:2: ( rule__EntityFeature__NameAssignment_2_1_1_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_0_3()); 
             }
-            // InternalEntityGrammar.g:8396:2: ( rule__EntityFeature__NameAssignment_2_1_1_0_3 )
-            // InternalEntityGrammar.g:8396:3: rule__EntityFeature__NameAssignment_2_1_1_0_3
+            // InternalEntityGrammar.g:8546:2: ( rule__EntityFeature__NameAssignment_2_1_1_0_3 )
+            // InternalEntityGrammar.g:8546:3: rule__EntityFeature__NameAssignment_2_1_1_0_3
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__NameAssignment_2_1_1_0_3();
@@ -30447,20 +31025,25 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0__4"
-    // InternalEntityGrammar.g:8404:1: rule__EntityFeature__Group_2_1_1_0__4 : rule__EntityFeature__Group_2_1_1_0__4__Impl ;
+    // InternalEntityGrammar.g:8554:1: rule__EntityFeature__Group_2_1_1_0__4 : rule__EntityFeature__Group_2_1_1_0__4__Impl rule__EntityFeature__Group_2_1_1_0__5 ;
     public final void rule__EntityFeature__Group_2_1_1_0__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8408:1: ( rule__EntityFeature__Group_2_1_1_0__4__Impl )
-            // InternalEntityGrammar.g:8409:2: rule__EntityFeature__Group_2_1_1_0__4__Impl
+            // InternalEntityGrammar.g:8558:1: ( rule__EntityFeature__Group_2_1_1_0__4__Impl rule__EntityFeature__Group_2_1_1_0__5 )
+            // InternalEntityGrammar.g:8559:2: rule__EntityFeature__Group_2_1_1_0__4__Impl rule__EntityFeature__Group_2_1_1_0__5
             {
-            pushFollow(FOLLOW_2);
+            pushFollow(FOLLOW_43);
             rule__EntityFeature__Group_2_1_1_0__4__Impl();
 
             state._fsp--;
             if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_1_1_0__5();
+
+            state._fsp--;
+            if (state.failed) return ;
 
             }
 
@@ -30480,31 +31063,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0__4__Impl"
-    // InternalEntityGrammar.g:8415:1: rule__EntityFeature__Group_2_1_1_0__4__Impl : ( ( rule__EntityFeature__Group_2_1_1_0_4__0 )? ) ;
+    // InternalEntityGrammar.g:8566:1: rule__EntityFeature__Group_2_1_1_0__4__Impl : ( ( rule__EntityFeature__Group_2_1_1_0_4__0 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_0__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8419:1: ( ( ( rule__EntityFeature__Group_2_1_1_0_4__0 )? ) )
-            // InternalEntityGrammar.g:8420:1: ( ( rule__EntityFeature__Group_2_1_1_0_4__0 )? )
+            // InternalEntityGrammar.g:8570:1: ( ( ( rule__EntityFeature__Group_2_1_1_0_4__0 )? ) )
+            // InternalEntityGrammar.g:8571:1: ( ( rule__EntityFeature__Group_2_1_1_0_4__0 )? )
             {
-            // InternalEntityGrammar.g:8420:1: ( ( rule__EntityFeature__Group_2_1_1_0_4__0 )? )
-            // InternalEntityGrammar.g:8421:2: ( rule__EntityFeature__Group_2_1_1_0_4__0 )?
+            // InternalEntityGrammar.g:8571:1: ( ( rule__EntityFeature__Group_2_1_1_0_4__0 )? )
+            // InternalEntityGrammar.g:8572:2: ( rule__EntityFeature__Group_2_1_1_0_4__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_4()); 
             }
-            // InternalEntityGrammar.g:8422:2: ( rule__EntityFeature__Group_2_1_1_0_4__0 )?
-            int alt104=2;
-            int LA104_0 = input.LA(1);
+            // InternalEntityGrammar.g:8573:2: ( rule__EntityFeature__Group_2_1_1_0_4__0 )?
+            int alt108=2;
+            int LA108_0 = input.LA(1);
 
-            if ( (LA104_0==102) ) {
-                alt104=1;
+            if ( (LA108_0==165) ) {
+                alt108=1;
             }
-            switch (alt104) {
+            switch (alt108) {
                 case 1 :
-                    // InternalEntityGrammar.g:8422:3: rule__EntityFeature__Group_2_1_1_0_4__0
+                    // InternalEntityGrammar.g:8573:3: rule__EntityFeature__Group_2_1_1_0_4__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_0_4__0();
@@ -30541,15 +31124,110 @@
     // $ANTLR end "rule__EntityFeature__Group_2_1_1_0__4__Impl"
 
 
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0__5"
+    // InternalEntityGrammar.g:8581:1: rule__EntityFeature__Group_2_1_1_0__5 : rule__EntityFeature__Group_2_1_1_0__5__Impl ;
+    public final void rule__EntityFeature__Group_2_1_1_0__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:8585:1: ( rule__EntityFeature__Group_2_1_1_0__5__Impl )
+            // InternalEntityGrammar.g:8586:2: rule__EntityFeature__Group_2_1_1_0__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_1_1_0__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0__5"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0__5__Impl"
+    // InternalEntityGrammar.g:8592:1: rule__EntityFeature__Group_2_1_1_0__5__Impl : ( ( rule__EntityFeature__Group_2_1_1_0_5__0 )? ) ;
+    public final void rule__EntityFeature__Group_2_1_1_0__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:8596:1: ( ( ( rule__EntityFeature__Group_2_1_1_0_5__0 )? ) )
+            // InternalEntityGrammar.g:8597:1: ( ( rule__EntityFeature__Group_2_1_1_0_5__0 )? )
+            {
+            // InternalEntityGrammar.g:8597:1: ( ( rule__EntityFeature__Group_2_1_1_0_5__0 )? )
+            // InternalEntityGrammar.g:8598:2: ( rule__EntityFeature__Group_2_1_1_0_5__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5()); 
+            }
+            // InternalEntityGrammar.g:8599:2: ( rule__EntityFeature__Group_2_1_1_0_5__0 )?
+            int alt109=2;
+            int LA109_0 = input.LA(1);
+
+            if ( (LA109_0==102) ) {
+                alt109=1;
+            }
+            switch (alt109) {
+                case 1 :
+                    // InternalEntityGrammar.g:8599:3: rule__EntityFeature__Group_2_1_1_0_5__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__Group_2_1_1_0_5__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0__5__Impl"
+
+
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_2__0"
-    // InternalEntityGrammar.g:8431:1: rule__EntityFeature__Group_2_1_1_0_2__0 : rule__EntityFeature__Group_2_1_1_0_2__0__Impl rule__EntityFeature__Group_2_1_1_0_2__1 ;
+    // InternalEntityGrammar.g:8608:1: rule__EntityFeature__Group_2_1_1_0_2__0 : rule__EntityFeature__Group_2_1_1_0_2__0__Impl rule__EntityFeature__Group_2_1_1_0_2__1 ;
     public final void rule__EntityFeature__Group_2_1_1_0_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8435:1: ( rule__EntityFeature__Group_2_1_1_0_2__0__Impl rule__EntityFeature__Group_2_1_1_0_2__1 )
-            // InternalEntityGrammar.g:8436:2: rule__EntityFeature__Group_2_1_1_0_2__0__Impl rule__EntityFeature__Group_2_1_1_0_2__1
+            // InternalEntityGrammar.g:8612:1: ( rule__EntityFeature__Group_2_1_1_0_2__0__Impl rule__EntityFeature__Group_2_1_1_0_2__1 )
+            // InternalEntityGrammar.g:8613:2: rule__EntityFeature__Group_2_1_1_0_2__0__Impl rule__EntityFeature__Group_2_1_1_0_2__1
             {
             pushFollow(FOLLOW_37);
             rule__EntityFeature__Group_2_1_1_0_2__0__Impl();
@@ -30580,17 +31258,17 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_2__0__Impl"
-    // InternalEntityGrammar.g:8443:1: rule__EntityFeature__Group_2_1_1_0_2__0__Impl : ( '[' ) ;
+    // InternalEntityGrammar.g:8620:1: rule__EntityFeature__Group_2_1_1_0_2__0__Impl : ( '[' ) ;
     public final void rule__EntityFeature__Group_2_1_1_0_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8447:1: ( ( '[' ) )
-            // InternalEntityGrammar.g:8448:1: ( '[' )
+            // InternalEntityGrammar.g:8624:1: ( ( '[' ) )
+            // InternalEntityGrammar.g:8625:1: ( '[' )
             {
-            // InternalEntityGrammar.g:8448:1: ( '[' )
-            // InternalEntityGrammar.g:8449:2: '['
+            // InternalEntityGrammar.g:8625:1: ( '[' )
+            // InternalEntityGrammar.g:8626:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_2_0()); 
@@ -30621,14 +31299,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_2__1"
-    // InternalEntityGrammar.g:8458:1: rule__EntityFeature__Group_2_1_1_0_2__1 : rule__EntityFeature__Group_2_1_1_0_2__1__Impl rule__EntityFeature__Group_2_1_1_0_2__2 ;
+    // InternalEntityGrammar.g:8635:1: rule__EntityFeature__Group_2_1_1_0_2__1 : rule__EntityFeature__Group_2_1_1_0_2__1__Impl rule__EntityFeature__Group_2_1_1_0_2__2 ;
     public final void rule__EntityFeature__Group_2_1_1_0_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8462:1: ( rule__EntityFeature__Group_2_1_1_0_2__1__Impl rule__EntityFeature__Group_2_1_1_0_2__2 )
-            // InternalEntityGrammar.g:8463:2: rule__EntityFeature__Group_2_1_1_0_2__1__Impl rule__EntityFeature__Group_2_1_1_0_2__2
+            // InternalEntityGrammar.g:8639:1: ( rule__EntityFeature__Group_2_1_1_0_2__1__Impl rule__EntityFeature__Group_2_1_1_0_2__2 )
+            // InternalEntityGrammar.g:8640:2: rule__EntityFeature__Group_2_1_1_0_2__1__Impl rule__EntityFeature__Group_2_1_1_0_2__2
             {
             pushFollow(FOLLOW_37);
             rule__EntityFeature__Group_2_1_1_0_2__1__Impl();
@@ -30659,35 +31337,35 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_2__1__Impl"
-    // InternalEntityGrammar.g:8470:1: rule__EntityFeature__Group_2_1_1_0_2__1__Impl : ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1 )* ) ;
+    // InternalEntityGrammar.g:8647:1: rule__EntityFeature__Group_2_1_1_0_2__1__Impl : ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1 )* ) ;
     public final void rule__EntityFeature__Group_2_1_1_0_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8474:1: ( ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1 )* ) )
-            // InternalEntityGrammar.g:8475:1: ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1 )* )
+            // InternalEntityGrammar.g:8651:1: ( ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1 )* ) )
+            // InternalEntityGrammar.g:8652:1: ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1 )* )
             {
-            // InternalEntityGrammar.g:8475:1: ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1 )* )
-            // InternalEntityGrammar.g:8476:2: ( rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1 )*
+            // InternalEntityGrammar.g:8652:1: ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1 )* )
+            // InternalEntityGrammar.g:8653:2: ( rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_1_1_0_2_1()); 
             }
-            // InternalEntityGrammar.g:8477:2: ( rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1 )*
-            loop105:
+            // InternalEntityGrammar.g:8654:2: ( rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1 )*
+            loop110:
             do {
-                int alt105=2;
-                int LA105_0 = input.LA(1);
+                int alt110=2;
+                int LA110_0 = input.LA(1);
 
-                if ( (LA105_0==113||(LA105_0>=117 && LA105_0<=128)) ) {
-                    alt105=1;
+                if ( (LA110_0==113||(LA110_0>=117 && LA110_0<=128)) ) {
+                    alt110=1;
                 }
 
 
-                switch (alt105) {
+                switch (alt110) {
             	case 1 :
-            	    // InternalEntityGrammar.g:8477:3: rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1
+            	    // InternalEntityGrammar.g:8654:3: rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1
             	    {
             	    pushFollow(FOLLOW_38);
             	    rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1();
@@ -30699,7 +31377,7 @@
             	    break;
 
             	default :
-            	    break loop105;
+            	    break loop110;
                 }
             } while (true);
 
@@ -30728,14 +31406,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_2__2"
-    // InternalEntityGrammar.g:8485:1: rule__EntityFeature__Group_2_1_1_0_2__2 : rule__EntityFeature__Group_2_1_1_0_2__2__Impl ;
+    // InternalEntityGrammar.g:8662:1: rule__EntityFeature__Group_2_1_1_0_2__2 : rule__EntityFeature__Group_2_1_1_0_2__2__Impl ;
     public final void rule__EntityFeature__Group_2_1_1_0_2__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8489:1: ( rule__EntityFeature__Group_2_1_1_0_2__2__Impl )
-            // InternalEntityGrammar.g:8490:2: rule__EntityFeature__Group_2_1_1_0_2__2__Impl
+            // InternalEntityGrammar.g:8666:1: ( rule__EntityFeature__Group_2_1_1_0_2__2__Impl )
+            // InternalEntityGrammar.g:8667:2: rule__EntityFeature__Group_2_1_1_0_2__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Group_2_1_1_0_2__2__Impl();
@@ -30761,17 +31439,17 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_2__2__Impl"
-    // InternalEntityGrammar.g:8496:1: rule__EntityFeature__Group_2_1_1_0_2__2__Impl : ( ']' ) ;
+    // InternalEntityGrammar.g:8673:1: rule__EntityFeature__Group_2_1_1_0_2__2__Impl : ( ']' ) ;
     public final void rule__EntityFeature__Group_2_1_1_0_2__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8500:1: ( ( ']' ) )
-            // InternalEntityGrammar.g:8501:1: ( ']' )
+            // InternalEntityGrammar.g:8677:1: ( ( ']' ) )
+            // InternalEntityGrammar.g:8678:1: ( ']' )
             {
-            // InternalEntityGrammar.g:8501:1: ( ']' )
-            // InternalEntityGrammar.g:8502:2: ']'
+            // InternalEntityGrammar.g:8678:1: ( ']' )
+            // InternalEntityGrammar.g:8679:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_2_2()); 
@@ -30802,16 +31480,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4__0"
-    // InternalEntityGrammar.g:8512:1: rule__EntityFeature__Group_2_1_1_0_4__0 : rule__EntityFeature__Group_2_1_1_0_4__0__Impl rule__EntityFeature__Group_2_1_1_0_4__1 ;
+    // InternalEntityGrammar.g:8689:1: rule__EntityFeature__Group_2_1_1_0_4__0 : rule__EntityFeature__Group_2_1_1_0_4__0__Impl rule__EntityFeature__Group_2_1_1_0_4__1 ;
     public final void rule__EntityFeature__Group_2_1_1_0_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8516:1: ( rule__EntityFeature__Group_2_1_1_0_4__0__Impl rule__EntityFeature__Group_2_1_1_0_4__1 )
-            // InternalEntityGrammar.g:8517:2: rule__EntityFeature__Group_2_1_1_0_4__0__Impl rule__EntityFeature__Group_2_1_1_0_4__1
+            // InternalEntityGrammar.g:8693:1: ( rule__EntityFeature__Group_2_1_1_0_4__0__Impl rule__EntityFeature__Group_2_1_1_0_4__1 )
+            // InternalEntityGrammar.g:8694:2: rule__EntityFeature__Group_2_1_1_0_4__0__Impl rule__EntityFeature__Group_2_1_1_0_4__1
             {
-            pushFollow(FOLLOW_17);
+            pushFollow(FOLLOW_11);
             rule__EntityFeature__Group_2_1_1_0_4__0__Impl();
 
             state._fsp--;
@@ -30840,24 +31518,34 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4__0__Impl"
-    // InternalEntityGrammar.g:8524:1: rule__EntityFeature__Group_2_1_1_0_4__0__Impl : ( 'properties' ) ;
+    // InternalEntityGrammar.g:8701:1: rule__EntityFeature__Group_2_1_1_0_4__0__Impl : ( ( rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_0_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8528:1: ( ( 'properties' ) )
-            // InternalEntityGrammar.g:8529:1: ( 'properties' )
+            // InternalEntityGrammar.g:8705:1: ( ( ( rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0 ) ) )
+            // InternalEntityGrammar.g:8706:1: ( ( rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0 ) )
             {
-            // InternalEntityGrammar.g:8529:1: ( 'properties' )
-            // InternalEntityGrammar.g:8530:2: 'properties'
+            // InternalEntityGrammar.g:8706:1: ( ( rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0 ) )
+            // InternalEntityGrammar.g:8707:2: ( rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_4_0()); 
+               before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_0_4_0()); 
             }
-            match(input,102,FOLLOW_2); if (state.failed) return ;
+            // InternalEntityGrammar.g:8708:2: ( rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0 )
+            // InternalEntityGrammar.g:8708:3: rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_4_0()); 
+               after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_0_4_0()); 
             }
 
             }
@@ -30881,22 +31569,17 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4__1"
-    // InternalEntityGrammar.g:8539:1: rule__EntityFeature__Group_2_1_1_0_4__1 : rule__EntityFeature__Group_2_1_1_0_4__1__Impl rule__EntityFeature__Group_2_1_1_0_4__2 ;
+    // InternalEntityGrammar.g:8716:1: rule__EntityFeature__Group_2_1_1_0_4__1 : rule__EntityFeature__Group_2_1_1_0_4__1__Impl ;
     public final void rule__EntityFeature__Group_2_1_1_0_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8543:1: ( rule__EntityFeature__Group_2_1_1_0_4__1__Impl rule__EntityFeature__Group_2_1_1_0_4__2 )
-            // InternalEntityGrammar.g:8544:2: rule__EntityFeature__Group_2_1_1_0_4__1__Impl rule__EntityFeature__Group_2_1_1_0_4__2
+            // InternalEntityGrammar.g:8720:1: ( rule__EntityFeature__Group_2_1_1_0_4__1__Impl )
+            // InternalEntityGrammar.g:8721:2: rule__EntityFeature__Group_2_1_1_0_4__1__Impl
             {
-            pushFollow(FOLLOW_39);
-            rule__EntityFeature__Group_2_1_1_0_4__1__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_1_1_0_4__2();
+            rule__EntityFeature__Group_2_1_1_0_4__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -30919,24 +31602,34 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4__1__Impl"
-    // InternalEntityGrammar.g:8551:1: rule__EntityFeature__Group_2_1_1_0_4__1__Impl : ( '(' ) ;
+    // InternalEntityGrammar.g:8727:1: rule__EntityFeature__Group_2_1_1_0_4__1__Impl : ( ( rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_0_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8555:1: ( ( '(' ) )
-            // InternalEntityGrammar.g:8556:1: ( '(' )
+            // InternalEntityGrammar.g:8731:1: ( ( ( rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1 ) ) )
+            // InternalEntityGrammar.g:8732:1: ( ( rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1 ) )
             {
-            // InternalEntityGrammar.g:8556:1: ( '(' )
-            // InternalEntityGrammar.g:8557:2: '('
+            // InternalEntityGrammar.g:8732:1: ( ( rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1 ) )
+            // InternalEntityGrammar.g:8733:2: ( rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_4_1()); 
+               before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_0_4_1()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            // InternalEntityGrammar.g:8734:2: ( rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1 )
+            // InternalEntityGrammar.g:8734:3: rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_4_1()); 
+               after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_0_4_1()); 
             }
 
             }
@@ -30959,23 +31652,102 @@
     // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_4__1__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4__2"
-    // InternalEntityGrammar.g:8566:1: rule__EntityFeature__Group_2_1_1_0_4__2 : rule__EntityFeature__Group_2_1_1_0_4__2__Impl rule__EntityFeature__Group_2_1_1_0_4__3 ;
-    public final void rule__EntityFeature__Group_2_1_1_0_4__2() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5__0"
+    // InternalEntityGrammar.g:8743:1: rule__EntityFeature__Group_2_1_1_0_5__0 : rule__EntityFeature__Group_2_1_1_0_5__0__Impl rule__EntityFeature__Group_2_1_1_0_5__1 ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8570:1: ( rule__EntityFeature__Group_2_1_1_0_4__2__Impl rule__EntityFeature__Group_2_1_1_0_4__3 )
-            // InternalEntityGrammar.g:8571:2: rule__EntityFeature__Group_2_1_1_0_4__2__Impl rule__EntityFeature__Group_2_1_1_0_4__3
+            // InternalEntityGrammar.g:8747:1: ( rule__EntityFeature__Group_2_1_1_0_5__0__Impl rule__EntityFeature__Group_2_1_1_0_5__1 )
+            // InternalEntityGrammar.g:8748:2: rule__EntityFeature__Group_2_1_1_0_5__0__Impl rule__EntityFeature__Group_2_1_1_0_5__1
+            {
+            pushFollow(FOLLOW_17);
+            rule__EntityFeature__Group_2_1_1_0_5__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_1_1_0_5__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5__0"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5__0__Impl"
+    // InternalEntityGrammar.g:8755:1: rule__EntityFeature__Group_2_1_1_0_5__0__Impl : ( 'properties' ) ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:8759:1: ( ( 'properties' ) )
+            // InternalEntityGrammar.g:8760:1: ( 'properties' )
+            {
+            // InternalEntityGrammar.g:8760:1: ( 'properties' )
+            // InternalEntityGrammar.g:8761:2: 'properties'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_5_0()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5__0__Impl"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5__1"
+    // InternalEntityGrammar.g:8770:1: rule__EntityFeature__Group_2_1_1_0_5__1 : rule__EntityFeature__Group_2_1_1_0_5__1__Impl rule__EntityFeature__Group_2_1_1_0_5__2 ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:8774:1: ( rule__EntityFeature__Group_2_1_1_0_5__1__Impl rule__EntityFeature__Group_2_1_1_0_5__2 )
+            // InternalEntityGrammar.g:8775:2: rule__EntityFeature__Group_2_1_1_0_5__1__Impl rule__EntityFeature__Group_2_1_1_0_5__2
             {
             pushFollow(FOLLOW_40);
-            rule__EntityFeature__Group_2_1_1_0_4__2__Impl();
+            rule__EntityFeature__Group_2_1_1_0_5__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_1_1_0_4__3();
+            rule__EntityFeature__Group_2_1_1_0_5__2();
 
             state._fsp--;
             if (state.failed) return ;
@@ -30994,38 +31766,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_4__2"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5__1"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4__2__Impl"
-    // InternalEntityGrammar.g:8578:1: rule__EntityFeature__Group_2_1_1_0_4__2__Impl : ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_2 ) ) ;
-    public final void rule__EntityFeature__Group_2_1_1_0_4__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5__1__Impl"
+    // InternalEntityGrammar.g:8782:1: rule__EntityFeature__Group_2_1_1_0_5__1__Impl : ( '(' ) ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8582:1: ( ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_2 ) ) )
-            // InternalEntityGrammar.g:8583:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_2 ) )
+            // InternalEntityGrammar.g:8786:1: ( ( '(' ) )
+            // InternalEntityGrammar.g:8787:1: ( '(' )
             {
-            // InternalEntityGrammar.g:8583:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_2 ) )
-            // InternalEntityGrammar.g:8584:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_2 )
+            // InternalEntityGrammar.g:8787:1: ( '(' )
+            // InternalEntityGrammar.g:8788:2: '('
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_4_2()); 
+               before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_5_1()); 
             }
-            // InternalEntityGrammar.g:8585:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_2 )
-            // InternalEntityGrammar.g:8585:3: rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_2
-            {
-            pushFollow(FOLLOW_2);
-            rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_2();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
+            match(input,90,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_4_2()); 
+               after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_5_1()); 
             }
 
             }
@@ -31045,26 +31807,26 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_4__2__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5__1__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4__3"
-    // InternalEntityGrammar.g:8593:1: rule__EntityFeature__Group_2_1_1_0_4__3 : rule__EntityFeature__Group_2_1_1_0_4__3__Impl rule__EntityFeature__Group_2_1_1_0_4__4 ;
-    public final void rule__EntityFeature__Group_2_1_1_0_4__3() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5__2"
+    // InternalEntityGrammar.g:8797:1: rule__EntityFeature__Group_2_1_1_0_5__2 : rule__EntityFeature__Group_2_1_1_0_5__2__Impl rule__EntityFeature__Group_2_1_1_0_5__3 ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8597:1: ( rule__EntityFeature__Group_2_1_1_0_4__3__Impl rule__EntityFeature__Group_2_1_1_0_4__4 )
-            // InternalEntityGrammar.g:8598:2: rule__EntityFeature__Group_2_1_1_0_4__3__Impl rule__EntityFeature__Group_2_1_1_0_4__4
+            // InternalEntityGrammar.g:8801:1: ( rule__EntityFeature__Group_2_1_1_0_5__2__Impl rule__EntityFeature__Group_2_1_1_0_5__3 )
+            // InternalEntityGrammar.g:8802:2: rule__EntityFeature__Group_2_1_1_0_5__2__Impl rule__EntityFeature__Group_2_1_1_0_5__3
             {
-            pushFollow(FOLLOW_40);
-            rule__EntityFeature__Group_2_1_1_0_4__3__Impl();
+            pushFollow(FOLLOW_41);
+            rule__EntityFeature__Group_2_1_1_0_5__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_1_1_0_4__4();
+            rule__EntityFeature__Group_2_1_1_0_5__3();
 
             state._fsp--;
             if (state.failed) return ;
@@ -31083,42 +31845,131 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_4__3"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5__2"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4__3__Impl"
-    // InternalEntityGrammar.g:8605:1: rule__EntityFeature__Group_2_1_1_0_4__3__Impl : ( ( rule__EntityFeature__Group_2_1_1_0_4_3__0 )* ) ;
-    public final void rule__EntityFeature__Group_2_1_1_0_4__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5__2__Impl"
+    // InternalEntityGrammar.g:8809:1: rule__EntityFeature__Group_2_1_1_0_5__2__Impl : ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2 ) ) ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8609:1: ( ( ( rule__EntityFeature__Group_2_1_1_0_4_3__0 )* ) )
-            // InternalEntityGrammar.g:8610:1: ( ( rule__EntityFeature__Group_2_1_1_0_4_3__0 )* )
+            // InternalEntityGrammar.g:8813:1: ( ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2 ) ) )
+            // InternalEntityGrammar.g:8814:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2 ) )
             {
-            // InternalEntityGrammar.g:8610:1: ( ( rule__EntityFeature__Group_2_1_1_0_4_3__0 )* )
-            // InternalEntityGrammar.g:8611:2: ( rule__EntityFeature__Group_2_1_1_0_4_3__0 )*
+            // InternalEntityGrammar.g:8814:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2 ) )
+            // InternalEntityGrammar.g:8815:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_4_3()); 
+               before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2()); 
             }
-            // InternalEntityGrammar.g:8612:2: ( rule__EntityFeature__Group_2_1_1_0_4_3__0 )*
-            loop106:
+            // InternalEntityGrammar.g:8816:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2 )
+            // InternalEntityGrammar.g:8816:3: rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5__2__Impl"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5__3"
+    // InternalEntityGrammar.g:8824:1: rule__EntityFeature__Group_2_1_1_0_5__3 : rule__EntityFeature__Group_2_1_1_0_5__3__Impl rule__EntityFeature__Group_2_1_1_0_5__4 ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:8828:1: ( rule__EntityFeature__Group_2_1_1_0_5__3__Impl rule__EntityFeature__Group_2_1_1_0_5__4 )
+            // InternalEntityGrammar.g:8829:2: rule__EntityFeature__Group_2_1_1_0_5__3__Impl rule__EntityFeature__Group_2_1_1_0_5__4
+            {
+            pushFollow(FOLLOW_41);
+            rule__EntityFeature__Group_2_1_1_0_5__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_1_1_0_5__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5__3"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5__3__Impl"
+    // InternalEntityGrammar.g:8836:1: rule__EntityFeature__Group_2_1_1_0_5__3__Impl : ( ( rule__EntityFeature__Group_2_1_1_0_5_3__0 )* ) ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:8840:1: ( ( ( rule__EntityFeature__Group_2_1_1_0_5_3__0 )* ) )
+            // InternalEntityGrammar.g:8841:1: ( ( rule__EntityFeature__Group_2_1_1_0_5_3__0 )* )
+            {
+            // InternalEntityGrammar.g:8841:1: ( ( rule__EntityFeature__Group_2_1_1_0_5_3__0 )* )
+            // InternalEntityGrammar.g:8842:2: ( rule__EntityFeature__Group_2_1_1_0_5_3__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_3()); 
+            }
+            // InternalEntityGrammar.g:8843:2: ( rule__EntityFeature__Group_2_1_1_0_5_3__0 )*
+            loop111:
             do {
-                int alt106=2;
-                int LA106_0 = input.LA(1);
+                int alt111=2;
+                int LA111_0 = input.LA(1);
 
-                if ( (LA106_0==95) ) {
-                    alt106=1;
+                if ( (LA111_0==95) ) {
+                    alt111=1;
                 }
 
 
-                switch (alt106) {
+                switch (alt111) {
             	case 1 :
-            	    // InternalEntityGrammar.g:8612:3: rule__EntityFeature__Group_2_1_1_0_4_3__0
+            	    // InternalEntityGrammar.g:8843:3: rule__EntityFeature__Group_2_1_1_0_5_3__0
             	    {
             	    pushFollow(FOLLOW_30);
-            	    rule__EntityFeature__Group_2_1_1_0_4_3__0();
+            	    rule__EntityFeature__Group_2_1_1_0_5_3__0();
 
             	    state._fsp--;
             	    if (state.failed) return ;
@@ -31127,12 +31978,12 @@
             	    break;
 
             	default :
-            	    break loop106;
+            	    break loop111;
                 }
             } while (true);
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_4_3()); 
+               after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_3()); 
             }
 
             }
@@ -31152,21 +32003,21 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_4__3__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5__3__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4__4"
-    // InternalEntityGrammar.g:8620:1: rule__EntityFeature__Group_2_1_1_0_4__4 : rule__EntityFeature__Group_2_1_1_0_4__4__Impl ;
-    public final void rule__EntityFeature__Group_2_1_1_0_4__4() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5__4"
+    // InternalEntityGrammar.g:8851:1: rule__EntityFeature__Group_2_1_1_0_5__4 : rule__EntityFeature__Group_2_1_1_0_5__4__Impl ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8624:1: ( rule__EntityFeature__Group_2_1_1_0_4__4__Impl )
-            // InternalEntityGrammar.g:8625:2: rule__EntityFeature__Group_2_1_1_0_4__4__Impl
+            // InternalEntityGrammar.g:8855:1: ( rule__EntityFeature__Group_2_1_1_0_5__4__Impl )
+            // InternalEntityGrammar.g:8856:2: rule__EntityFeature__Group_2_1_1_0_5__4__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_1_1_0_4__4__Impl();
+            rule__EntityFeature__Group_2_1_1_0_5__4__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -31185,28 +32036,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_4__4"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5__4"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4__4__Impl"
-    // InternalEntityGrammar.g:8631:1: rule__EntityFeature__Group_2_1_1_0_4__4__Impl : ( ')' ) ;
-    public final void rule__EntityFeature__Group_2_1_1_0_4__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5__4__Impl"
+    // InternalEntityGrammar.g:8862:1: rule__EntityFeature__Group_2_1_1_0_5__4__Impl : ( ')' ) ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8635:1: ( ( ')' ) )
-            // InternalEntityGrammar.g:8636:1: ( ')' )
+            // InternalEntityGrammar.g:8866:1: ( ( ')' ) )
+            // InternalEntityGrammar.g:8867:1: ( ')' )
             {
-            // InternalEntityGrammar.g:8636:1: ( ')' )
-            // InternalEntityGrammar.g:8637:2: ')'
+            // InternalEntityGrammar.g:8867:1: ( ')' )
+            // InternalEntityGrammar.g:8868:2: ')'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_4_4()); 
+               before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_5_4()); 
             }
             match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_4_4()); 
+               after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_5_4()); 
             }
 
             }
@@ -31226,26 +32077,26 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_4__4__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5__4__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4_3__0"
-    // InternalEntityGrammar.g:8647:1: rule__EntityFeature__Group_2_1_1_0_4_3__0 : rule__EntityFeature__Group_2_1_1_0_4_3__0__Impl rule__EntityFeature__Group_2_1_1_0_4_3__1 ;
-    public final void rule__EntityFeature__Group_2_1_1_0_4_3__0() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5_3__0"
+    // InternalEntityGrammar.g:8878:1: rule__EntityFeature__Group_2_1_1_0_5_3__0 : rule__EntityFeature__Group_2_1_1_0_5_3__0__Impl rule__EntityFeature__Group_2_1_1_0_5_3__1 ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8651:1: ( rule__EntityFeature__Group_2_1_1_0_4_3__0__Impl rule__EntityFeature__Group_2_1_1_0_4_3__1 )
-            // InternalEntityGrammar.g:8652:2: rule__EntityFeature__Group_2_1_1_0_4_3__0__Impl rule__EntityFeature__Group_2_1_1_0_4_3__1
+            // InternalEntityGrammar.g:8882:1: ( rule__EntityFeature__Group_2_1_1_0_5_3__0__Impl rule__EntityFeature__Group_2_1_1_0_5_3__1 )
+            // InternalEntityGrammar.g:8883:2: rule__EntityFeature__Group_2_1_1_0_5_3__0__Impl rule__EntityFeature__Group_2_1_1_0_5_3__1
             {
-            pushFollow(FOLLOW_39);
-            rule__EntityFeature__Group_2_1_1_0_4_3__0__Impl();
+            pushFollow(FOLLOW_40);
+            rule__EntityFeature__Group_2_1_1_0_5_3__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_1_1_0_4_3__1();
+            rule__EntityFeature__Group_2_1_1_0_5_3__1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -31264,28 +32115,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_4_3__0"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5_3__0"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4_3__0__Impl"
-    // InternalEntityGrammar.g:8659:1: rule__EntityFeature__Group_2_1_1_0_4_3__0__Impl : ( ',' ) ;
-    public final void rule__EntityFeature__Group_2_1_1_0_4_3__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5_3__0__Impl"
+    // InternalEntityGrammar.g:8890:1: rule__EntityFeature__Group_2_1_1_0_5_3__0__Impl : ( ',' ) ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8663:1: ( ( ',' ) )
-            // InternalEntityGrammar.g:8664:1: ( ',' )
+            // InternalEntityGrammar.g:8894:1: ( ( ',' ) )
+            // InternalEntityGrammar.g:8895:1: ( ',' )
             {
-            // InternalEntityGrammar.g:8664:1: ( ',' )
-            // InternalEntityGrammar.g:8665:2: ','
+            // InternalEntityGrammar.g:8895:1: ( ',' )
+            // InternalEntityGrammar.g:8896:2: ','
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_0_4_3_0()); 
+               before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_0_5_3_0()); 
             }
             match(input,95,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_0_4_3_0()); 
+               after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_0_5_3_0()); 
             }
 
             }
@@ -31305,21 +32156,21 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_4_3__0__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5_3__0__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4_3__1"
-    // InternalEntityGrammar.g:8674:1: rule__EntityFeature__Group_2_1_1_0_4_3__1 : rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl ;
-    public final void rule__EntityFeature__Group_2_1_1_0_4_3__1() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5_3__1"
+    // InternalEntityGrammar.g:8905:1: rule__EntityFeature__Group_2_1_1_0_5_3__1 : rule__EntityFeature__Group_2_1_1_0_5_3__1__Impl ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8678:1: ( rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl )
-            // InternalEntityGrammar.g:8679:2: rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl
+            // InternalEntityGrammar.g:8909:1: ( rule__EntityFeature__Group_2_1_1_0_5_3__1__Impl )
+            // InternalEntityGrammar.g:8910:2: rule__EntityFeature__Group_2_1_1_0_5_3__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl();
+            rule__EntityFeature__Group_2_1_1_0_5_3__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -31338,30 +32189,30 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_4_3__1"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5_3__1"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl"
-    // InternalEntityGrammar.g:8685:1: rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl : ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_3_1 ) ) ;
-    public final void rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_0_5_3__1__Impl"
+    // InternalEntityGrammar.g:8916:1: rule__EntityFeature__Group_2_1_1_0_5_3__1__Impl : ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1 ) ) ;
+    public final void rule__EntityFeature__Group_2_1_1_0_5_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8689:1: ( ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_3_1 ) ) )
-            // InternalEntityGrammar.g:8690:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_3_1 ) )
+            // InternalEntityGrammar.g:8920:1: ( ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1 ) ) )
+            // InternalEntityGrammar.g:8921:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1 ) )
             {
-            // InternalEntityGrammar.g:8690:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_3_1 ) )
-            // InternalEntityGrammar.g:8691:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_3_1 )
+            // InternalEntityGrammar.g:8921:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1 ) )
+            // InternalEntityGrammar.g:8922:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_4_3_1()); 
+               before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_3_1()); 
             }
-            // InternalEntityGrammar.g:8692:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_3_1 )
-            // InternalEntityGrammar.g:8692:3: rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_3_1
+            // InternalEntityGrammar.g:8923:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1 )
+            // InternalEntityGrammar.g:8923:3: rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1
             {
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_3_1();
+            rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -31369,7 +32220,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_4_3_1()); 
+               after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_3_1()); 
             }
 
             }
@@ -31389,20 +32240,20 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_0_5_3__1__Impl"
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__0"
-    // InternalEntityGrammar.g:8701:1: rule__EntityFeature__Group_2_1_1_1__0 : rule__EntityFeature__Group_2_1_1_1__0__Impl rule__EntityFeature__Group_2_1_1_1__1 ;
+    // InternalEntityGrammar.g:8932:1: rule__EntityFeature__Group_2_1_1_1__0 : rule__EntityFeature__Group_2_1_1_1__0__Impl rule__EntityFeature__Group_2_1_1_1__1 ;
     public final void rule__EntityFeature__Group_2_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8705:1: ( rule__EntityFeature__Group_2_1_1_1__0__Impl rule__EntityFeature__Group_2_1_1_1__1 )
-            // InternalEntityGrammar.g:8706:2: rule__EntityFeature__Group_2_1_1_1__0__Impl rule__EntityFeature__Group_2_1_1_1__1
+            // InternalEntityGrammar.g:8936:1: ( rule__EntityFeature__Group_2_1_1_1__0__Impl rule__EntityFeature__Group_2_1_1_1__1 )
+            // InternalEntityGrammar.g:8937:2: rule__EntityFeature__Group_2_1_1_1__0__Impl rule__EntityFeature__Group_2_1_1_1__1
             {
-            pushFollow(FOLLOW_43);
+            pushFollow(FOLLOW_44);
             rule__EntityFeature__Group_2_1_1_1__0__Impl();
 
             state._fsp--;
@@ -31431,23 +32282,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__0__Impl"
-    // InternalEntityGrammar.g:8713:1: rule__EntityFeature__Group_2_1_1_1__0__Impl : ( ( rule__EntityFeature__DerivedAssignment_2_1_1_1_0 ) ) ;
+    // InternalEntityGrammar.g:8944:1: rule__EntityFeature__Group_2_1_1_1__0__Impl : ( ( rule__EntityFeature__DerivedAssignment_2_1_1_1_0 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8717:1: ( ( ( rule__EntityFeature__DerivedAssignment_2_1_1_1_0 ) ) )
-            // InternalEntityGrammar.g:8718:1: ( ( rule__EntityFeature__DerivedAssignment_2_1_1_1_0 ) )
+            // InternalEntityGrammar.g:8948:1: ( ( ( rule__EntityFeature__DerivedAssignment_2_1_1_1_0 ) ) )
+            // InternalEntityGrammar.g:8949:1: ( ( rule__EntityFeature__DerivedAssignment_2_1_1_1_0 ) )
             {
-            // InternalEntityGrammar.g:8718:1: ( ( rule__EntityFeature__DerivedAssignment_2_1_1_1_0 ) )
-            // InternalEntityGrammar.g:8719:2: ( rule__EntityFeature__DerivedAssignment_2_1_1_1_0 )
+            // InternalEntityGrammar.g:8949:1: ( ( rule__EntityFeature__DerivedAssignment_2_1_1_1_0 ) )
+            // InternalEntityGrammar.g:8950:2: ( rule__EntityFeature__DerivedAssignment_2_1_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getDerivedAssignment_2_1_1_1_0()); 
             }
-            // InternalEntityGrammar.g:8720:2: ( rule__EntityFeature__DerivedAssignment_2_1_1_1_0 )
-            // InternalEntityGrammar.g:8720:3: rule__EntityFeature__DerivedAssignment_2_1_1_1_0
+            // InternalEntityGrammar.g:8951:2: ( rule__EntityFeature__DerivedAssignment_2_1_1_1_0 )
+            // InternalEntityGrammar.g:8951:3: rule__EntityFeature__DerivedAssignment_2_1_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__DerivedAssignment_2_1_1_1_0();
@@ -31482,16 +32333,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__1"
-    // InternalEntityGrammar.g:8728:1: rule__EntityFeature__Group_2_1_1_1__1 : rule__EntityFeature__Group_2_1_1_1__1__Impl rule__EntityFeature__Group_2_1_1_1__2 ;
+    // InternalEntityGrammar.g:8959:1: rule__EntityFeature__Group_2_1_1_1__1 : rule__EntityFeature__Group_2_1_1_1__1__Impl rule__EntityFeature__Group_2_1_1_1__2 ;
     public final void rule__EntityFeature__Group_2_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8732:1: ( rule__EntityFeature__Group_2_1_1_1__1__Impl rule__EntityFeature__Group_2_1_1_1__2 )
-            // InternalEntityGrammar.g:8733:2: rule__EntityFeature__Group_2_1_1_1__1__Impl rule__EntityFeature__Group_2_1_1_1__2
+            // InternalEntityGrammar.g:8963:1: ( rule__EntityFeature__Group_2_1_1_1__1__Impl rule__EntityFeature__Group_2_1_1_1__2 )
+            // InternalEntityGrammar.g:8964:2: rule__EntityFeature__Group_2_1_1_1__1__Impl rule__EntityFeature__Group_2_1_1_1__2
             {
-            pushFollow(FOLLOW_43);
+            pushFollow(FOLLOW_44);
             rule__EntityFeature__Group_2_1_1_1__1__Impl();
 
             state._fsp--;
@@ -31520,31 +32371,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__1__Impl"
-    // InternalEntityGrammar.g:8740:1: rule__EntityFeature__Group_2_1_1_1__1__Impl : ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1 )? ) ;
+    // InternalEntityGrammar.g:8971:1: rule__EntityFeature__Group_2_1_1_1__1__Impl : ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8744:1: ( ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1 )? ) )
-            // InternalEntityGrammar.g:8745:1: ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1 )? )
+            // InternalEntityGrammar.g:8975:1: ( ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1 )? ) )
+            // InternalEntityGrammar.g:8976:1: ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1 )? )
             {
-            // InternalEntityGrammar.g:8745:1: ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1 )? )
-            // InternalEntityGrammar.g:8746:2: ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1 )?
+            // InternalEntityGrammar.g:8976:1: ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1 )? )
+            // InternalEntityGrammar.g:8977:2: ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getDomainDescriptionAssignment_2_1_1_1_1()); 
             }
-            // InternalEntityGrammar.g:8747:2: ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1 )?
-            int alt107=2;
-            int LA107_0 = input.LA(1);
+            // InternalEntityGrammar.g:8978:2: ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1 )?
+            int alt112=2;
+            int LA112_0 = input.LA(1);
 
-            if ( (LA107_0==163) ) {
-                alt107=1;
+            if ( (LA112_0==166) ) {
+                alt112=1;
             }
-            switch (alt107) {
+            switch (alt112) {
                 case 1 :
-                    // InternalEntityGrammar.g:8747:3: rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1
+                    // InternalEntityGrammar.g:8978:3: rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1();
@@ -31582,14 +32433,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__2"
-    // InternalEntityGrammar.g:8755:1: rule__EntityFeature__Group_2_1_1_1__2 : rule__EntityFeature__Group_2_1_1_1__2__Impl rule__EntityFeature__Group_2_1_1_1__3 ;
+    // InternalEntityGrammar.g:8986:1: rule__EntityFeature__Group_2_1_1_1__2 : rule__EntityFeature__Group_2_1_1_1__2__Impl rule__EntityFeature__Group_2_1_1_1__3 ;
     public final void rule__EntityFeature__Group_2_1_1_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8759:1: ( rule__EntityFeature__Group_2_1_1_1__2__Impl rule__EntityFeature__Group_2_1_1_1__3 )
-            // InternalEntityGrammar.g:8760:2: rule__EntityFeature__Group_2_1_1_1__2__Impl rule__EntityFeature__Group_2_1_1_1__3
+            // InternalEntityGrammar.g:8990:1: ( rule__EntityFeature__Group_2_1_1_1__2__Impl rule__EntityFeature__Group_2_1_1_1__3 )
+            // InternalEntityGrammar.g:8991:2: rule__EntityFeature__Group_2_1_1_1__2__Impl rule__EntityFeature__Group_2_1_1_1__3
             {
             pushFollow(FOLLOW_11);
             rule__EntityFeature__Group_2_1_1_1__2__Impl();
@@ -31620,23 +32471,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__2__Impl"
-    // InternalEntityGrammar.g:8767:1: rule__EntityFeature__Group_2_1_1_1__2__Impl : ( ( rule__EntityFeature__TypeAssignment_2_1_1_1_2 ) ) ;
+    // InternalEntityGrammar.g:8998:1: rule__EntityFeature__Group_2_1_1_1__2__Impl : ( ( rule__EntityFeature__TypeAssignment_2_1_1_1_2 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8771:1: ( ( ( rule__EntityFeature__TypeAssignment_2_1_1_1_2 ) ) )
-            // InternalEntityGrammar.g:8772:1: ( ( rule__EntityFeature__TypeAssignment_2_1_1_1_2 ) )
+            // InternalEntityGrammar.g:9002:1: ( ( ( rule__EntityFeature__TypeAssignment_2_1_1_1_2 ) ) )
+            // InternalEntityGrammar.g:9003:1: ( ( rule__EntityFeature__TypeAssignment_2_1_1_1_2 ) )
             {
-            // InternalEntityGrammar.g:8772:1: ( ( rule__EntityFeature__TypeAssignment_2_1_1_1_2 ) )
-            // InternalEntityGrammar.g:8773:2: ( rule__EntityFeature__TypeAssignment_2_1_1_1_2 )
+            // InternalEntityGrammar.g:9003:1: ( ( rule__EntityFeature__TypeAssignment_2_1_1_1_2 ) )
+            // InternalEntityGrammar.g:9004:2: ( rule__EntityFeature__TypeAssignment_2_1_1_1_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_1_2()); 
             }
-            // InternalEntityGrammar.g:8774:2: ( rule__EntityFeature__TypeAssignment_2_1_1_1_2 )
-            // InternalEntityGrammar.g:8774:3: rule__EntityFeature__TypeAssignment_2_1_1_1_2
+            // InternalEntityGrammar.g:9005:2: ( rule__EntityFeature__TypeAssignment_2_1_1_1_2 )
+            // InternalEntityGrammar.g:9005:3: rule__EntityFeature__TypeAssignment_2_1_1_1_2
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__TypeAssignment_2_1_1_1_2();
@@ -31671,16 +32522,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__3"
-    // InternalEntityGrammar.g:8782:1: rule__EntityFeature__Group_2_1_1_1__3 : rule__EntityFeature__Group_2_1_1_1__3__Impl rule__EntityFeature__Group_2_1_1_1__4 ;
+    // InternalEntityGrammar.g:9013:1: rule__EntityFeature__Group_2_1_1_1__3 : rule__EntityFeature__Group_2_1_1_1__3__Impl rule__EntityFeature__Group_2_1_1_1__4 ;
     public final void rule__EntityFeature__Group_2_1_1_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8786:1: ( rule__EntityFeature__Group_2_1_1_1__3__Impl rule__EntityFeature__Group_2_1_1_1__4 )
-            // InternalEntityGrammar.g:8787:2: rule__EntityFeature__Group_2_1_1_1__3__Impl rule__EntityFeature__Group_2_1_1_1__4
+            // InternalEntityGrammar.g:9017:1: ( rule__EntityFeature__Group_2_1_1_1__3__Impl rule__EntityFeature__Group_2_1_1_1__4 )
+            // InternalEntityGrammar.g:9018:2: rule__EntityFeature__Group_2_1_1_1__3__Impl rule__EntityFeature__Group_2_1_1_1__4
             {
-            pushFollow(FOLLOW_44);
+            pushFollow(FOLLOW_45);
             rule__EntityFeature__Group_2_1_1_1__3__Impl();
 
             state._fsp--;
@@ -31709,23 +32560,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__3__Impl"
-    // InternalEntityGrammar.g:8794:1: rule__EntityFeature__Group_2_1_1_1__3__Impl : ( ( rule__EntityFeature__NameAssignment_2_1_1_1_3 ) ) ;
+    // InternalEntityGrammar.g:9025:1: rule__EntityFeature__Group_2_1_1_1__3__Impl : ( ( rule__EntityFeature__NameAssignment_2_1_1_1_3 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8798:1: ( ( ( rule__EntityFeature__NameAssignment_2_1_1_1_3 ) ) )
-            // InternalEntityGrammar.g:8799:1: ( ( rule__EntityFeature__NameAssignment_2_1_1_1_3 ) )
+            // InternalEntityGrammar.g:9029:1: ( ( ( rule__EntityFeature__NameAssignment_2_1_1_1_3 ) ) )
+            // InternalEntityGrammar.g:9030:1: ( ( rule__EntityFeature__NameAssignment_2_1_1_1_3 ) )
             {
-            // InternalEntityGrammar.g:8799:1: ( ( rule__EntityFeature__NameAssignment_2_1_1_1_3 ) )
-            // InternalEntityGrammar.g:8800:2: ( rule__EntityFeature__NameAssignment_2_1_1_1_3 )
+            // InternalEntityGrammar.g:9030:1: ( ( rule__EntityFeature__NameAssignment_2_1_1_1_3 ) )
+            // InternalEntityGrammar.g:9031:2: ( rule__EntityFeature__NameAssignment_2_1_1_1_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_1_3()); 
             }
-            // InternalEntityGrammar.g:8801:2: ( rule__EntityFeature__NameAssignment_2_1_1_1_3 )
-            // InternalEntityGrammar.g:8801:3: rule__EntityFeature__NameAssignment_2_1_1_1_3
+            // InternalEntityGrammar.g:9032:2: ( rule__EntityFeature__NameAssignment_2_1_1_1_3 )
+            // InternalEntityGrammar.g:9032:3: rule__EntityFeature__NameAssignment_2_1_1_1_3
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__NameAssignment_2_1_1_1_3();
@@ -31760,16 +32611,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__4"
-    // InternalEntityGrammar.g:8809:1: rule__EntityFeature__Group_2_1_1_1__4 : rule__EntityFeature__Group_2_1_1_1__4__Impl rule__EntityFeature__Group_2_1_1_1__5 ;
+    // InternalEntityGrammar.g:9040:1: rule__EntityFeature__Group_2_1_1_1__4 : rule__EntityFeature__Group_2_1_1_1__4__Impl rule__EntityFeature__Group_2_1_1_1__5 ;
     public final void rule__EntityFeature__Group_2_1_1_1__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8813:1: ( rule__EntityFeature__Group_2_1_1_1__4__Impl rule__EntityFeature__Group_2_1_1_1__5 )
-            // InternalEntityGrammar.g:8814:2: rule__EntityFeature__Group_2_1_1_1__4__Impl rule__EntityFeature__Group_2_1_1_1__5
+            // InternalEntityGrammar.g:9044:1: ( rule__EntityFeature__Group_2_1_1_1__4__Impl rule__EntityFeature__Group_2_1_1_1__5 )
+            // InternalEntityGrammar.g:9045:2: rule__EntityFeature__Group_2_1_1_1__4__Impl rule__EntityFeature__Group_2_1_1_1__5
             {
-            pushFollow(FOLLOW_44);
+            pushFollow(FOLLOW_45);
             rule__EntityFeature__Group_2_1_1_1__4__Impl();
 
             state._fsp--;
@@ -31798,31 +32649,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__4__Impl"
-    // InternalEntityGrammar.g:8821:1: rule__EntityFeature__Group_2_1_1_1__4__Impl : ( ( rule__EntityFeature__Group_2_1_1_1_4__0 )? ) ;
+    // InternalEntityGrammar.g:9052:1: rule__EntityFeature__Group_2_1_1_1__4__Impl : ( ( rule__EntityFeature__Group_2_1_1_1_4__0 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_1__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8825:1: ( ( ( rule__EntityFeature__Group_2_1_1_1_4__0 )? ) )
-            // InternalEntityGrammar.g:8826:1: ( ( rule__EntityFeature__Group_2_1_1_1_4__0 )? )
+            // InternalEntityGrammar.g:9056:1: ( ( ( rule__EntityFeature__Group_2_1_1_1_4__0 )? ) )
+            // InternalEntityGrammar.g:9057:1: ( ( rule__EntityFeature__Group_2_1_1_1_4__0 )? )
             {
-            // InternalEntityGrammar.g:8826:1: ( ( rule__EntityFeature__Group_2_1_1_1_4__0 )? )
-            // InternalEntityGrammar.g:8827:2: ( rule__EntityFeature__Group_2_1_1_1_4__0 )?
+            // InternalEntityGrammar.g:9057:1: ( ( rule__EntityFeature__Group_2_1_1_1_4__0 )? )
+            // InternalEntityGrammar.g:9058:2: ( rule__EntityFeature__Group_2_1_1_1_4__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_4()); 
             }
-            // InternalEntityGrammar.g:8828:2: ( rule__EntityFeature__Group_2_1_1_1_4__0 )?
-            int alt108=2;
-            int LA108_0 = input.LA(1);
+            // InternalEntityGrammar.g:9059:2: ( rule__EntityFeature__Group_2_1_1_1_4__0 )?
+            int alt113=2;
+            int LA113_0 = input.LA(1);
 
-            if ( (LA108_0==102) ) {
-                alt108=1;
+            if ( (LA113_0==165) ) {
+                alt113=1;
             }
-            switch (alt108) {
+            switch (alt113) {
                 case 1 :
-                    // InternalEntityGrammar.g:8828:3: rule__EntityFeature__Group_2_1_1_1_4__0
+                    // InternalEntityGrammar.g:9059:3: rule__EntityFeature__Group_2_1_1_1_4__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_1_4__0();
@@ -31860,20 +32711,25 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__5"
-    // InternalEntityGrammar.g:8836:1: rule__EntityFeature__Group_2_1_1_1__5 : rule__EntityFeature__Group_2_1_1_1__5__Impl ;
+    // InternalEntityGrammar.g:9067:1: rule__EntityFeature__Group_2_1_1_1__5 : rule__EntityFeature__Group_2_1_1_1__5__Impl rule__EntityFeature__Group_2_1_1_1__6 ;
     public final void rule__EntityFeature__Group_2_1_1_1__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8840:1: ( rule__EntityFeature__Group_2_1_1_1__5__Impl )
-            // InternalEntityGrammar.g:8841:2: rule__EntityFeature__Group_2_1_1_1__5__Impl
+            // InternalEntityGrammar.g:9071:1: ( rule__EntityFeature__Group_2_1_1_1__5__Impl rule__EntityFeature__Group_2_1_1_1__6 )
+            // InternalEntityGrammar.g:9072:2: rule__EntityFeature__Group_2_1_1_1__5__Impl rule__EntityFeature__Group_2_1_1_1__6
             {
-            pushFollow(FOLLOW_2);
+            pushFollow(FOLLOW_45);
             rule__EntityFeature__Group_2_1_1_1__5__Impl();
 
             state._fsp--;
             if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_1_1_1__6();
+
+            state._fsp--;
+            if (state.failed) return ;
 
             }
 
@@ -31893,34 +32749,45 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__5__Impl"
-    // InternalEntityGrammar.g:8847:1: rule__EntityFeature__Group_2_1_1_1__5__Impl : ( ( rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_5 ) ) ;
+    // InternalEntityGrammar.g:9079:1: rule__EntityFeature__Group_2_1_1_1__5__Impl : ( ( rule__EntityFeature__Group_2_1_1_1_5__0 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_1__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8851:1: ( ( ( rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_5 ) ) )
-            // InternalEntityGrammar.g:8852:1: ( ( rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_5 ) )
+            // InternalEntityGrammar.g:9083:1: ( ( ( rule__EntityFeature__Group_2_1_1_1_5__0 )? ) )
+            // InternalEntityGrammar.g:9084:1: ( ( rule__EntityFeature__Group_2_1_1_1_5__0 )? )
             {
-            // InternalEntityGrammar.g:8852:1: ( ( rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_5 ) )
-            // InternalEntityGrammar.g:8853:2: ( rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_5 )
+            // InternalEntityGrammar.g:9084:1: ( ( rule__EntityFeature__Group_2_1_1_1_5__0 )? )
+            // InternalEntityGrammar.g:9085:2: ( rule__EntityFeature__Group_2_1_1_1_5__0 )?
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionAssignment_2_1_1_1_5()); 
+               before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5()); 
             }
-            // InternalEntityGrammar.g:8854:2: ( rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_5 )
-            // InternalEntityGrammar.g:8854:3: rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_5
-            {
-            pushFollow(FOLLOW_2);
-            rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_5();
+            // InternalEntityGrammar.g:9086:2: ( rule__EntityFeature__Group_2_1_1_1_5__0 )?
+            int alt114=2;
+            int LA114_0 = input.LA(1);
 
-            state._fsp--;
-            if (state.failed) return ;
+            if ( (LA114_0==102) ) {
+                alt114=1;
+            }
+            switch (alt114) {
+                case 1 :
+                    // InternalEntityGrammar.g:9086:3: rule__EntityFeature__Group_2_1_1_1_5__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__Group_2_1_1_1_5__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
 
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionAssignment_2_1_1_1_5()); 
+               after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5()); 
             }
 
             }
@@ -31943,17 +32810,101 @@
     // $ANTLR end "rule__EntityFeature__Group_2_1_1_1__5__Impl"
 
 
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__6"
+    // InternalEntityGrammar.g:9094:1: rule__EntityFeature__Group_2_1_1_1__6 : rule__EntityFeature__Group_2_1_1_1__6__Impl ;
+    public final void rule__EntityFeature__Group_2_1_1_1__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:9098:1: ( rule__EntityFeature__Group_2_1_1_1__6__Impl )
+            // InternalEntityGrammar.g:9099:2: rule__EntityFeature__Group_2_1_1_1__6__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_1_1_1__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1__6"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1__6__Impl"
+    // InternalEntityGrammar.g:9105:1: rule__EntityFeature__Group_2_1_1_1__6__Impl : ( ( rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_6 ) ) ;
+    public final void rule__EntityFeature__Group_2_1_1_1__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:9109:1: ( ( ( rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_6 ) ) )
+            // InternalEntityGrammar.g:9110:1: ( ( rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_6 ) )
+            {
+            // InternalEntityGrammar.g:9110:1: ( ( rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_6 ) )
+            // InternalEntityGrammar.g:9111:2: ( rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_6 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionAssignment_2_1_1_1_6()); 
+            }
+            // InternalEntityGrammar.g:9112:2: ( rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_6 )
+            // InternalEntityGrammar.g:9112:3: rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_6
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionAssignment_2_1_1_1_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1__6__Impl"
+
+
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4__0"
-    // InternalEntityGrammar.g:8863:1: rule__EntityFeature__Group_2_1_1_1_4__0 : rule__EntityFeature__Group_2_1_1_1_4__0__Impl rule__EntityFeature__Group_2_1_1_1_4__1 ;
+    // InternalEntityGrammar.g:9121:1: rule__EntityFeature__Group_2_1_1_1_4__0 : rule__EntityFeature__Group_2_1_1_1_4__0__Impl rule__EntityFeature__Group_2_1_1_1_4__1 ;
     public final void rule__EntityFeature__Group_2_1_1_1_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8867:1: ( rule__EntityFeature__Group_2_1_1_1_4__0__Impl rule__EntityFeature__Group_2_1_1_1_4__1 )
-            // InternalEntityGrammar.g:8868:2: rule__EntityFeature__Group_2_1_1_1_4__0__Impl rule__EntityFeature__Group_2_1_1_1_4__1
+            // InternalEntityGrammar.g:9125:1: ( rule__EntityFeature__Group_2_1_1_1_4__0__Impl rule__EntityFeature__Group_2_1_1_1_4__1 )
+            // InternalEntityGrammar.g:9126:2: rule__EntityFeature__Group_2_1_1_1_4__0__Impl rule__EntityFeature__Group_2_1_1_1_4__1
             {
-            pushFollow(FOLLOW_17);
+            pushFollow(FOLLOW_11);
             rule__EntityFeature__Group_2_1_1_1_4__0__Impl();
 
             state._fsp--;
@@ -31982,24 +32933,34 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4__0__Impl"
-    // InternalEntityGrammar.g:8875:1: rule__EntityFeature__Group_2_1_1_1_4__0__Impl : ( 'properties' ) ;
+    // InternalEntityGrammar.g:9133:1: rule__EntityFeature__Group_2_1_1_1_4__0__Impl : ( ( rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_1_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8879:1: ( ( 'properties' ) )
-            // InternalEntityGrammar.g:8880:1: ( 'properties' )
+            // InternalEntityGrammar.g:9137:1: ( ( ( rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0 ) ) )
+            // InternalEntityGrammar.g:9138:1: ( ( rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0 ) )
             {
-            // InternalEntityGrammar.g:8880:1: ( 'properties' )
-            // InternalEntityGrammar.g:8881:2: 'properties'
+            // InternalEntityGrammar.g:9138:1: ( ( rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0 ) )
+            // InternalEntityGrammar.g:9139:2: ( rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_4_0()); 
+               before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_1_4_0()); 
             }
-            match(input,102,FOLLOW_2); if (state.failed) return ;
+            // InternalEntityGrammar.g:9140:2: ( rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0 )
+            // InternalEntityGrammar.g:9140:3: rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_4_0()); 
+               after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_1_4_0()); 
             }
 
             }
@@ -32023,22 +32984,17 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4__1"
-    // InternalEntityGrammar.g:8890:1: rule__EntityFeature__Group_2_1_1_1_4__1 : rule__EntityFeature__Group_2_1_1_1_4__1__Impl rule__EntityFeature__Group_2_1_1_1_4__2 ;
+    // InternalEntityGrammar.g:9148:1: rule__EntityFeature__Group_2_1_1_1_4__1 : rule__EntityFeature__Group_2_1_1_1_4__1__Impl ;
     public final void rule__EntityFeature__Group_2_1_1_1_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8894:1: ( rule__EntityFeature__Group_2_1_1_1_4__1__Impl rule__EntityFeature__Group_2_1_1_1_4__2 )
-            // InternalEntityGrammar.g:8895:2: rule__EntityFeature__Group_2_1_1_1_4__1__Impl rule__EntityFeature__Group_2_1_1_1_4__2
+            // InternalEntityGrammar.g:9152:1: ( rule__EntityFeature__Group_2_1_1_1_4__1__Impl )
+            // InternalEntityGrammar.g:9153:2: rule__EntityFeature__Group_2_1_1_1_4__1__Impl
             {
-            pushFollow(FOLLOW_39);
-            rule__EntityFeature__Group_2_1_1_1_4__1__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_1_1_1_4__2();
+            rule__EntityFeature__Group_2_1_1_1_4__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -32061,24 +33017,34 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4__1__Impl"
-    // InternalEntityGrammar.g:8902:1: rule__EntityFeature__Group_2_1_1_1_4__1__Impl : ( '(' ) ;
+    // InternalEntityGrammar.g:9159:1: rule__EntityFeature__Group_2_1_1_1_4__1__Impl : ( ( rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_1_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8906:1: ( ( '(' ) )
-            // InternalEntityGrammar.g:8907:1: ( '(' )
+            // InternalEntityGrammar.g:9163:1: ( ( ( rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1 ) ) )
+            // InternalEntityGrammar.g:9164:1: ( ( rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1 ) )
             {
-            // InternalEntityGrammar.g:8907:1: ( '(' )
-            // InternalEntityGrammar.g:8908:2: '('
+            // InternalEntityGrammar.g:9164:1: ( ( rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1 ) )
+            // InternalEntityGrammar.g:9165:2: ( rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_4_1()); 
+               before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_1_4_1()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            // InternalEntityGrammar.g:9166:2: ( rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1 )
+            // InternalEntityGrammar.g:9166:3: rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_4_1()); 
+               after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_1_4_1()); 
             }
 
             }
@@ -32101,23 +33067,102 @@
     // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_4__1__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4__2"
-    // InternalEntityGrammar.g:8917:1: rule__EntityFeature__Group_2_1_1_1_4__2 : rule__EntityFeature__Group_2_1_1_1_4__2__Impl rule__EntityFeature__Group_2_1_1_1_4__3 ;
-    public final void rule__EntityFeature__Group_2_1_1_1_4__2() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5__0"
+    // InternalEntityGrammar.g:9175:1: rule__EntityFeature__Group_2_1_1_1_5__0 : rule__EntityFeature__Group_2_1_1_1_5__0__Impl rule__EntityFeature__Group_2_1_1_1_5__1 ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8921:1: ( rule__EntityFeature__Group_2_1_1_1_4__2__Impl rule__EntityFeature__Group_2_1_1_1_4__3 )
-            // InternalEntityGrammar.g:8922:2: rule__EntityFeature__Group_2_1_1_1_4__2__Impl rule__EntityFeature__Group_2_1_1_1_4__3
+            // InternalEntityGrammar.g:9179:1: ( rule__EntityFeature__Group_2_1_1_1_5__0__Impl rule__EntityFeature__Group_2_1_1_1_5__1 )
+            // InternalEntityGrammar.g:9180:2: rule__EntityFeature__Group_2_1_1_1_5__0__Impl rule__EntityFeature__Group_2_1_1_1_5__1
+            {
+            pushFollow(FOLLOW_17);
+            rule__EntityFeature__Group_2_1_1_1_5__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_1_1_1_5__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5__0"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5__0__Impl"
+    // InternalEntityGrammar.g:9187:1: rule__EntityFeature__Group_2_1_1_1_5__0__Impl : ( 'properties' ) ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:9191:1: ( ( 'properties' ) )
+            // InternalEntityGrammar.g:9192:1: ( 'properties' )
+            {
+            // InternalEntityGrammar.g:9192:1: ( 'properties' )
+            // InternalEntityGrammar.g:9193:2: 'properties'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_5_0()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5__0__Impl"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5__1"
+    // InternalEntityGrammar.g:9202:1: rule__EntityFeature__Group_2_1_1_1_5__1 : rule__EntityFeature__Group_2_1_1_1_5__1__Impl rule__EntityFeature__Group_2_1_1_1_5__2 ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:9206:1: ( rule__EntityFeature__Group_2_1_1_1_5__1__Impl rule__EntityFeature__Group_2_1_1_1_5__2 )
+            // InternalEntityGrammar.g:9207:2: rule__EntityFeature__Group_2_1_1_1_5__1__Impl rule__EntityFeature__Group_2_1_1_1_5__2
             {
             pushFollow(FOLLOW_40);
-            rule__EntityFeature__Group_2_1_1_1_4__2__Impl();
+            rule__EntityFeature__Group_2_1_1_1_5__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_1_1_1_4__3();
+            rule__EntityFeature__Group_2_1_1_1_5__2();
 
             state._fsp--;
             if (state.failed) return ;
@@ -32136,38 +33181,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_4__2"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5__1"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4__2__Impl"
-    // InternalEntityGrammar.g:8929:1: rule__EntityFeature__Group_2_1_1_1_4__2__Impl : ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_2 ) ) ;
-    public final void rule__EntityFeature__Group_2_1_1_1_4__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5__1__Impl"
+    // InternalEntityGrammar.g:9214:1: rule__EntityFeature__Group_2_1_1_1_5__1__Impl : ( '(' ) ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8933:1: ( ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_2 ) ) )
-            // InternalEntityGrammar.g:8934:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_2 ) )
+            // InternalEntityGrammar.g:9218:1: ( ( '(' ) )
+            // InternalEntityGrammar.g:9219:1: ( '(' )
             {
-            // InternalEntityGrammar.g:8934:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_2 ) )
-            // InternalEntityGrammar.g:8935:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_2 )
+            // InternalEntityGrammar.g:9219:1: ( '(' )
+            // InternalEntityGrammar.g:9220:2: '('
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_4_2()); 
+               before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_5_1()); 
             }
-            // InternalEntityGrammar.g:8936:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_2 )
-            // InternalEntityGrammar.g:8936:3: rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_2
-            {
-            pushFollow(FOLLOW_2);
-            rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_2();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
+            match(input,90,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_4_2()); 
+               after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_5_1()); 
             }
 
             }
@@ -32187,26 +33222,26 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_4__2__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5__1__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4__3"
-    // InternalEntityGrammar.g:8944:1: rule__EntityFeature__Group_2_1_1_1_4__3 : rule__EntityFeature__Group_2_1_1_1_4__3__Impl rule__EntityFeature__Group_2_1_1_1_4__4 ;
-    public final void rule__EntityFeature__Group_2_1_1_1_4__3() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5__2"
+    // InternalEntityGrammar.g:9229:1: rule__EntityFeature__Group_2_1_1_1_5__2 : rule__EntityFeature__Group_2_1_1_1_5__2__Impl rule__EntityFeature__Group_2_1_1_1_5__3 ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8948:1: ( rule__EntityFeature__Group_2_1_1_1_4__3__Impl rule__EntityFeature__Group_2_1_1_1_4__4 )
-            // InternalEntityGrammar.g:8949:2: rule__EntityFeature__Group_2_1_1_1_4__3__Impl rule__EntityFeature__Group_2_1_1_1_4__4
+            // InternalEntityGrammar.g:9233:1: ( rule__EntityFeature__Group_2_1_1_1_5__2__Impl rule__EntityFeature__Group_2_1_1_1_5__3 )
+            // InternalEntityGrammar.g:9234:2: rule__EntityFeature__Group_2_1_1_1_5__2__Impl rule__EntityFeature__Group_2_1_1_1_5__3
             {
-            pushFollow(FOLLOW_40);
-            rule__EntityFeature__Group_2_1_1_1_4__3__Impl();
+            pushFollow(FOLLOW_41);
+            rule__EntityFeature__Group_2_1_1_1_5__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_1_1_1_4__4();
+            rule__EntityFeature__Group_2_1_1_1_5__3();
 
             state._fsp--;
             if (state.failed) return ;
@@ -32225,42 +33260,131 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_4__3"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5__2"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4__3__Impl"
-    // InternalEntityGrammar.g:8956:1: rule__EntityFeature__Group_2_1_1_1_4__3__Impl : ( ( rule__EntityFeature__Group_2_1_1_1_4_3__0 )* ) ;
-    public final void rule__EntityFeature__Group_2_1_1_1_4__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5__2__Impl"
+    // InternalEntityGrammar.g:9241:1: rule__EntityFeature__Group_2_1_1_1_5__2__Impl : ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2 ) ) ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8960:1: ( ( ( rule__EntityFeature__Group_2_1_1_1_4_3__0 )* ) )
-            // InternalEntityGrammar.g:8961:1: ( ( rule__EntityFeature__Group_2_1_1_1_4_3__0 )* )
+            // InternalEntityGrammar.g:9245:1: ( ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2 ) ) )
+            // InternalEntityGrammar.g:9246:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2 ) )
             {
-            // InternalEntityGrammar.g:8961:1: ( ( rule__EntityFeature__Group_2_1_1_1_4_3__0 )* )
-            // InternalEntityGrammar.g:8962:2: ( rule__EntityFeature__Group_2_1_1_1_4_3__0 )*
+            // InternalEntityGrammar.g:9246:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2 ) )
+            // InternalEntityGrammar.g:9247:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_4_3()); 
+               before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2()); 
             }
-            // InternalEntityGrammar.g:8963:2: ( rule__EntityFeature__Group_2_1_1_1_4_3__0 )*
-            loop109:
+            // InternalEntityGrammar.g:9248:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2 )
+            // InternalEntityGrammar.g:9248:3: rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5__2__Impl"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5__3"
+    // InternalEntityGrammar.g:9256:1: rule__EntityFeature__Group_2_1_1_1_5__3 : rule__EntityFeature__Group_2_1_1_1_5__3__Impl rule__EntityFeature__Group_2_1_1_1_5__4 ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:9260:1: ( rule__EntityFeature__Group_2_1_1_1_5__3__Impl rule__EntityFeature__Group_2_1_1_1_5__4 )
+            // InternalEntityGrammar.g:9261:2: rule__EntityFeature__Group_2_1_1_1_5__3__Impl rule__EntityFeature__Group_2_1_1_1_5__4
+            {
+            pushFollow(FOLLOW_41);
+            rule__EntityFeature__Group_2_1_1_1_5__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_1_1_1_5__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5__3"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5__3__Impl"
+    // InternalEntityGrammar.g:9268:1: rule__EntityFeature__Group_2_1_1_1_5__3__Impl : ( ( rule__EntityFeature__Group_2_1_1_1_5_3__0 )* ) ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:9272:1: ( ( ( rule__EntityFeature__Group_2_1_1_1_5_3__0 )* ) )
+            // InternalEntityGrammar.g:9273:1: ( ( rule__EntityFeature__Group_2_1_1_1_5_3__0 )* )
+            {
+            // InternalEntityGrammar.g:9273:1: ( ( rule__EntityFeature__Group_2_1_1_1_5_3__0 )* )
+            // InternalEntityGrammar.g:9274:2: ( rule__EntityFeature__Group_2_1_1_1_5_3__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_3()); 
+            }
+            // InternalEntityGrammar.g:9275:2: ( rule__EntityFeature__Group_2_1_1_1_5_3__0 )*
+            loop115:
             do {
-                int alt109=2;
-                int LA109_0 = input.LA(1);
+                int alt115=2;
+                int LA115_0 = input.LA(1);
 
-                if ( (LA109_0==95) ) {
-                    alt109=1;
+                if ( (LA115_0==95) ) {
+                    alt115=1;
                 }
 
 
-                switch (alt109) {
+                switch (alt115) {
             	case 1 :
-            	    // InternalEntityGrammar.g:8963:3: rule__EntityFeature__Group_2_1_1_1_4_3__0
+            	    // InternalEntityGrammar.g:9275:3: rule__EntityFeature__Group_2_1_1_1_5_3__0
             	    {
             	    pushFollow(FOLLOW_30);
-            	    rule__EntityFeature__Group_2_1_1_1_4_3__0();
+            	    rule__EntityFeature__Group_2_1_1_1_5_3__0();
 
             	    state._fsp--;
             	    if (state.failed) return ;
@@ -32269,12 +33393,12 @@
             	    break;
 
             	default :
-            	    break loop109;
+            	    break loop115;
                 }
             } while (true);
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_4_3()); 
+               after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_3()); 
             }
 
             }
@@ -32294,21 +33418,21 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_4__3__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5__3__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4__4"
-    // InternalEntityGrammar.g:8971:1: rule__EntityFeature__Group_2_1_1_1_4__4 : rule__EntityFeature__Group_2_1_1_1_4__4__Impl ;
-    public final void rule__EntityFeature__Group_2_1_1_1_4__4() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5__4"
+    // InternalEntityGrammar.g:9283:1: rule__EntityFeature__Group_2_1_1_1_5__4 : rule__EntityFeature__Group_2_1_1_1_5__4__Impl ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8975:1: ( rule__EntityFeature__Group_2_1_1_1_4__4__Impl )
-            // InternalEntityGrammar.g:8976:2: rule__EntityFeature__Group_2_1_1_1_4__4__Impl
+            // InternalEntityGrammar.g:9287:1: ( rule__EntityFeature__Group_2_1_1_1_5__4__Impl )
+            // InternalEntityGrammar.g:9288:2: rule__EntityFeature__Group_2_1_1_1_5__4__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_1_1_1_4__4__Impl();
+            rule__EntityFeature__Group_2_1_1_1_5__4__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -32327,28 +33451,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_4__4"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5__4"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4__4__Impl"
-    // InternalEntityGrammar.g:8982:1: rule__EntityFeature__Group_2_1_1_1_4__4__Impl : ( ')' ) ;
-    public final void rule__EntityFeature__Group_2_1_1_1_4__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5__4__Impl"
+    // InternalEntityGrammar.g:9294:1: rule__EntityFeature__Group_2_1_1_1_5__4__Impl : ( ')' ) ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:8986:1: ( ( ')' ) )
-            // InternalEntityGrammar.g:8987:1: ( ')' )
+            // InternalEntityGrammar.g:9298:1: ( ( ')' ) )
+            // InternalEntityGrammar.g:9299:1: ( ')' )
             {
-            // InternalEntityGrammar.g:8987:1: ( ')' )
-            // InternalEntityGrammar.g:8988:2: ')'
+            // InternalEntityGrammar.g:9299:1: ( ')' )
+            // InternalEntityGrammar.g:9300:2: ')'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_4_4()); 
+               before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_5_4()); 
             }
             match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_4_4()); 
+               after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_5_4()); 
             }
 
             }
@@ -32368,26 +33492,26 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_4__4__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5__4__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4_3__0"
-    // InternalEntityGrammar.g:8998:1: rule__EntityFeature__Group_2_1_1_1_4_3__0 : rule__EntityFeature__Group_2_1_1_1_4_3__0__Impl rule__EntityFeature__Group_2_1_1_1_4_3__1 ;
-    public final void rule__EntityFeature__Group_2_1_1_1_4_3__0() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5_3__0"
+    // InternalEntityGrammar.g:9310:1: rule__EntityFeature__Group_2_1_1_1_5_3__0 : rule__EntityFeature__Group_2_1_1_1_5_3__0__Impl rule__EntityFeature__Group_2_1_1_1_5_3__1 ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9002:1: ( rule__EntityFeature__Group_2_1_1_1_4_3__0__Impl rule__EntityFeature__Group_2_1_1_1_4_3__1 )
-            // InternalEntityGrammar.g:9003:2: rule__EntityFeature__Group_2_1_1_1_4_3__0__Impl rule__EntityFeature__Group_2_1_1_1_4_3__1
+            // InternalEntityGrammar.g:9314:1: ( rule__EntityFeature__Group_2_1_1_1_5_3__0__Impl rule__EntityFeature__Group_2_1_1_1_5_3__1 )
+            // InternalEntityGrammar.g:9315:2: rule__EntityFeature__Group_2_1_1_1_5_3__0__Impl rule__EntityFeature__Group_2_1_1_1_5_3__1
             {
-            pushFollow(FOLLOW_39);
-            rule__EntityFeature__Group_2_1_1_1_4_3__0__Impl();
+            pushFollow(FOLLOW_40);
+            rule__EntityFeature__Group_2_1_1_1_5_3__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_1_1_1_4_3__1();
+            rule__EntityFeature__Group_2_1_1_1_5_3__1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -32406,28 +33530,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_4_3__0"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5_3__0"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4_3__0__Impl"
-    // InternalEntityGrammar.g:9010:1: rule__EntityFeature__Group_2_1_1_1_4_3__0__Impl : ( ',' ) ;
-    public final void rule__EntityFeature__Group_2_1_1_1_4_3__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5_3__0__Impl"
+    // InternalEntityGrammar.g:9322:1: rule__EntityFeature__Group_2_1_1_1_5_3__0__Impl : ( ',' ) ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9014:1: ( ( ',' ) )
-            // InternalEntityGrammar.g:9015:1: ( ',' )
+            // InternalEntityGrammar.g:9326:1: ( ( ',' ) )
+            // InternalEntityGrammar.g:9327:1: ( ',' )
             {
-            // InternalEntityGrammar.g:9015:1: ( ',' )
-            // InternalEntityGrammar.g:9016:2: ','
+            // InternalEntityGrammar.g:9327:1: ( ',' )
+            // InternalEntityGrammar.g:9328:2: ','
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_1_4_3_0()); 
+               before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_1_5_3_0()); 
             }
             match(input,95,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_1_4_3_0()); 
+               after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_1_5_3_0()); 
             }
 
             }
@@ -32447,21 +33571,21 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_4_3__0__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5_3__0__Impl"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4_3__1"
-    // InternalEntityGrammar.g:9025:1: rule__EntityFeature__Group_2_1_1_1_4_3__1 : rule__EntityFeature__Group_2_1_1_1_4_3__1__Impl ;
-    public final void rule__EntityFeature__Group_2_1_1_1_4_3__1() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5_3__1"
+    // InternalEntityGrammar.g:9337:1: rule__EntityFeature__Group_2_1_1_1_5_3__1 : rule__EntityFeature__Group_2_1_1_1_5_3__1__Impl ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9029:1: ( rule__EntityFeature__Group_2_1_1_1_4_3__1__Impl )
-            // InternalEntityGrammar.g:9030:2: rule__EntityFeature__Group_2_1_1_1_4_3__1__Impl
+            // InternalEntityGrammar.g:9341:1: ( rule__EntityFeature__Group_2_1_1_1_5_3__1__Impl )
+            // InternalEntityGrammar.g:9342:2: rule__EntityFeature__Group_2_1_1_1_5_3__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__Group_2_1_1_1_4_3__1__Impl();
+            rule__EntityFeature__Group_2_1_1_1_5_3__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -32480,30 +33604,30 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_4_3__1"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5_3__1"
 
 
-    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_4_3__1__Impl"
-    // InternalEntityGrammar.g:9036:1: rule__EntityFeature__Group_2_1_1_1_4_3__1__Impl : ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_3_1 ) ) ;
-    public final void rule__EntityFeature__Group_2_1_1_1_4_3__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_1_5_3__1__Impl"
+    // InternalEntityGrammar.g:9348:1: rule__EntityFeature__Group_2_1_1_1_5_3__1__Impl : ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1 ) ) ;
+    public final void rule__EntityFeature__Group_2_1_1_1_5_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9040:1: ( ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_3_1 ) ) )
-            // InternalEntityGrammar.g:9041:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_3_1 ) )
+            // InternalEntityGrammar.g:9352:1: ( ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1 ) ) )
+            // InternalEntityGrammar.g:9353:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1 ) )
             {
-            // InternalEntityGrammar.g:9041:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_3_1 ) )
-            // InternalEntityGrammar.g:9042:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_3_1 )
+            // InternalEntityGrammar.g:9353:1: ( ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1 ) )
+            // InternalEntityGrammar.g:9354:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_4_3_1()); 
+               before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_3_1()); 
             }
-            // InternalEntityGrammar.g:9043:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_3_1 )
-            // InternalEntityGrammar.g:9043:3: rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_3_1
+            // InternalEntityGrammar.g:9355:2: ( rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1 )
+            // InternalEntityGrammar.g:9355:3: rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1
             {
             pushFollow(FOLLOW_2);
-            rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_3_1();
+            rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -32511,7 +33635,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_4_3_1()); 
+               after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_3_1()); 
             }
 
             }
@@ -32531,20 +33655,20 @@
         }
         return ;
     }
-    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_4_3__1__Impl"
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_1_5_3__1__Impl"
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__0"
-    // InternalEntityGrammar.g:9052:1: rule__EntityFeature__Group_2_1_1_2__0 : rule__EntityFeature__Group_2_1_1_2__0__Impl rule__EntityFeature__Group_2_1_1_2__1 ;
+    // InternalEntityGrammar.g:9364:1: rule__EntityFeature__Group_2_1_1_2__0 : rule__EntityFeature__Group_2_1_1_2__0__Impl rule__EntityFeature__Group_2_1_1_2__1 ;
     public final void rule__EntityFeature__Group_2_1_1_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9056:1: ( rule__EntityFeature__Group_2_1_1_2__0__Impl rule__EntityFeature__Group_2_1_1_2__1 )
-            // InternalEntityGrammar.g:9057:2: rule__EntityFeature__Group_2_1_1_2__0__Impl rule__EntityFeature__Group_2_1_1_2__1
+            // InternalEntityGrammar.g:9368:1: ( rule__EntityFeature__Group_2_1_1_2__0__Impl rule__EntityFeature__Group_2_1_1_2__1 )
+            // InternalEntityGrammar.g:9369:2: rule__EntityFeature__Group_2_1_1_2__0__Impl rule__EntityFeature__Group_2_1_1_2__1
             {
-            pushFollow(FOLLOW_45);
+            pushFollow(FOLLOW_46);
             rule__EntityFeature__Group_2_1_1_2__0__Impl();
 
             state._fsp--;
@@ -32573,23 +33697,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__0__Impl"
-    // InternalEntityGrammar.g:9064:1: rule__EntityFeature__Group_2_1_1_2__0__Impl : ( ( rule__EntityFeature__Alternatives_2_1_1_2_0 ) ) ;
+    // InternalEntityGrammar.g:9376:1: rule__EntityFeature__Group_2_1_1_2__0__Impl : ( ( rule__EntityFeature__Alternatives_2_1_1_2_0 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9068:1: ( ( ( rule__EntityFeature__Alternatives_2_1_1_2_0 ) ) )
-            // InternalEntityGrammar.g:9069:1: ( ( rule__EntityFeature__Alternatives_2_1_1_2_0 ) )
+            // InternalEntityGrammar.g:9380:1: ( ( ( rule__EntityFeature__Alternatives_2_1_1_2_0 ) ) )
+            // InternalEntityGrammar.g:9381:1: ( ( rule__EntityFeature__Alternatives_2_1_1_2_0 ) )
             {
-            // InternalEntityGrammar.g:9069:1: ( ( rule__EntityFeature__Alternatives_2_1_1_2_0 ) )
-            // InternalEntityGrammar.g:9070:2: ( rule__EntityFeature__Alternatives_2_1_1_2_0 )
+            // InternalEntityGrammar.g:9381:1: ( ( rule__EntityFeature__Alternatives_2_1_1_2_0 ) )
+            // InternalEntityGrammar.g:9382:2: ( rule__EntityFeature__Alternatives_2_1_1_2_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1_2_0()); 
             }
-            // InternalEntityGrammar.g:9071:2: ( rule__EntityFeature__Alternatives_2_1_1_2_0 )
-            // InternalEntityGrammar.g:9071:3: rule__EntityFeature__Alternatives_2_1_1_2_0
+            // InternalEntityGrammar.g:9383:2: ( rule__EntityFeature__Alternatives_2_1_1_2_0 )
+            // InternalEntityGrammar.g:9383:3: rule__EntityFeature__Alternatives_2_1_1_2_0
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Alternatives_2_1_1_2_0();
@@ -32624,16 +33748,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__1"
-    // InternalEntityGrammar.g:9079:1: rule__EntityFeature__Group_2_1_1_2__1 : rule__EntityFeature__Group_2_1_1_2__1__Impl rule__EntityFeature__Group_2_1_1_2__2 ;
+    // InternalEntityGrammar.g:9391:1: rule__EntityFeature__Group_2_1_1_2__1 : rule__EntityFeature__Group_2_1_1_2__1__Impl rule__EntityFeature__Group_2_1_1_2__2 ;
     public final void rule__EntityFeature__Group_2_1_1_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9083:1: ( rule__EntityFeature__Group_2_1_1_2__1__Impl rule__EntityFeature__Group_2_1_1_2__2 )
-            // InternalEntityGrammar.g:9084:2: rule__EntityFeature__Group_2_1_1_2__1__Impl rule__EntityFeature__Group_2_1_1_2__2
+            // InternalEntityGrammar.g:9395:1: ( rule__EntityFeature__Group_2_1_1_2__1__Impl rule__EntityFeature__Group_2_1_1_2__2 )
+            // InternalEntityGrammar.g:9396:2: rule__EntityFeature__Group_2_1_1_2__1__Impl rule__EntityFeature__Group_2_1_1_2__2
             {
-            pushFollow(FOLLOW_45);
+            pushFollow(FOLLOW_46);
             rule__EntityFeature__Group_2_1_1_2__1__Impl();
 
             state._fsp--;
@@ -32662,31 +33786,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__1__Impl"
-    // InternalEntityGrammar.g:9091:1: rule__EntityFeature__Group_2_1_1_2__1__Impl : ( ( rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1 )? ) ;
+    // InternalEntityGrammar.g:9403:1: rule__EntityFeature__Group_2_1_1_2__1__Impl : ( ( rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9095:1: ( ( ( rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1 )? ) )
-            // InternalEntityGrammar.g:9096:1: ( ( rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1 )? )
+            // InternalEntityGrammar.g:9407:1: ( ( ( rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1 )? ) )
+            // InternalEntityGrammar.g:9408:1: ( ( rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1 )? )
             {
-            // InternalEntityGrammar.g:9096:1: ( ( rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1 )? )
-            // InternalEntityGrammar.g:9097:2: ( rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1 )?
+            // InternalEntityGrammar.g:9408:1: ( ( rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1 )? )
+            // InternalEntityGrammar.g:9409:2: ( rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getUniqueEntryAssignment_2_1_1_2_1()); 
             }
-            // InternalEntityGrammar.g:9098:2: ( rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1 )?
-            int alt110=2;
-            int LA110_0 = input.LA(1);
+            // InternalEntityGrammar.g:9410:2: ( rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1 )?
+            int alt116=2;
+            int LA116_0 = input.LA(1);
 
-            if ( (LA110_0==162) ) {
-                alt110=1;
+            if ( (LA116_0==162) ) {
+                alt116=1;
             }
-            switch (alt110) {
+            switch (alt116) {
                 case 1 :
-                    // InternalEntityGrammar.g:9098:3: rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1
+                    // InternalEntityGrammar.g:9410:3: rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__UniqueEntryAssignment_2_1_1_2_1();
@@ -32724,16 +33848,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__2"
-    // InternalEntityGrammar.g:9106:1: rule__EntityFeature__Group_2_1_1_2__2 : rule__EntityFeature__Group_2_1_1_2__2__Impl rule__EntityFeature__Group_2_1_1_2__3 ;
+    // InternalEntityGrammar.g:9418:1: rule__EntityFeature__Group_2_1_1_2__2 : rule__EntityFeature__Group_2_1_1_2__2__Impl rule__EntityFeature__Group_2_1_1_2__3 ;
     public final void rule__EntityFeature__Group_2_1_1_2__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9110:1: ( rule__EntityFeature__Group_2_1_1_2__2__Impl rule__EntityFeature__Group_2_1_1_2__3 )
-            // InternalEntityGrammar.g:9111:2: rule__EntityFeature__Group_2_1_1_2__2__Impl rule__EntityFeature__Group_2_1_1_2__3
+            // InternalEntityGrammar.g:9422:1: ( rule__EntityFeature__Group_2_1_1_2__2__Impl rule__EntityFeature__Group_2_1_1_2__3 )
+            // InternalEntityGrammar.g:9423:2: rule__EntityFeature__Group_2_1_1_2__2__Impl rule__EntityFeature__Group_2_1_1_2__3
             {
-            pushFollow(FOLLOW_45);
+            pushFollow(FOLLOW_46);
             rule__EntityFeature__Group_2_1_1_2__2__Impl();
 
             state._fsp--;
@@ -32762,31 +33886,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__2__Impl"
-    // InternalEntityGrammar.g:9118:1: rule__EntityFeature__Group_2_1_1_2__2__Impl : ( ( rule__EntityFeature__Alternatives_2_1_1_2_2 )? ) ;
+    // InternalEntityGrammar.g:9430:1: rule__EntityFeature__Group_2_1_1_2__2__Impl : ( ( rule__EntityFeature__Alternatives_2_1_1_2_2 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9122:1: ( ( ( rule__EntityFeature__Alternatives_2_1_1_2_2 )? ) )
-            // InternalEntityGrammar.g:9123:1: ( ( rule__EntityFeature__Alternatives_2_1_1_2_2 )? )
+            // InternalEntityGrammar.g:9434:1: ( ( ( rule__EntityFeature__Alternatives_2_1_1_2_2 )? ) )
+            // InternalEntityGrammar.g:9435:1: ( ( rule__EntityFeature__Alternatives_2_1_1_2_2 )? )
             {
-            // InternalEntityGrammar.g:9123:1: ( ( rule__EntityFeature__Alternatives_2_1_1_2_2 )? )
-            // InternalEntityGrammar.g:9124:2: ( rule__EntityFeature__Alternatives_2_1_1_2_2 )?
+            // InternalEntityGrammar.g:9435:1: ( ( rule__EntityFeature__Alternatives_2_1_1_2_2 )? )
+            // InternalEntityGrammar.g:9436:2: ( rule__EntityFeature__Alternatives_2_1_1_2_2 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1_2_2()); 
             }
-            // InternalEntityGrammar.g:9125:2: ( rule__EntityFeature__Alternatives_2_1_1_2_2 )?
-            int alt111=2;
-            int LA111_0 = input.LA(1);
+            // InternalEntityGrammar.g:9437:2: ( rule__EntityFeature__Alternatives_2_1_1_2_2 )?
+            int alt117=2;
+            int LA117_0 = input.LA(1);
 
-            if ( (LA111_0==130||LA111_0==165) ) {
-                alt111=1;
+            if ( (LA117_0==130||LA117_0==168) ) {
+                alt117=1;
             }
-            switch (alt111) {
+            switch (alt117) {
                 case 1 :
-                    // InternalEntityGrammar.g:9125:3: rule__EntityFeature__Alternatives_2_1_1_2_2
+                    // InternalEntityGrammar.g:9437:3: rule__EntityFeature__Alternatives_2_1_1_2_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Alternatives_2_1_1_2_2();
@@ -32824,14 +33948,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__3"
-    // InternalEntityGrammar.g:9133:1: rule__EntityFeature__Group_2_1_1_2__3 : rule__EntityFeature__Group_2_1_1_2__3__Impl rule__EntityFeature__Group_2_1_1_2__4 ;
+    // InternalEntityGrammar.g:9445:1: rule__EntityFeature__Group_2_1_1_2__3 : rule__EntityFeature__Group_2_1_1_2__3__Impl rule__EntityFeature__Group_2_1_1_2__4 ;
     public final void rule__EntityFeature__Group_2_1_1_2__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9137:1: ( rule__EntityFeature__Group_2_1_1_2__3__Impl rule__EntityFeature__Group_2_1_1_2__4 )
-            // InternalEntityGrammar.g:9138:2: rule__EntityFeature__Group_2_1_1_2__3__Impl rule__EntityFeature__Group_2_1_1_2__4
+            // InternalEntityGrammar.g:9449:1: ( rule__EntityFeature__Group_2_1_1_2__3__Impl rule__EntityFeature__Group_2_1_1_2__4 )
+            // InternalEntityGrammar.g:9450:2: rule__EntityFeature__Group_2_1_1_2__3__Impl rule__EntityFeature__Group_2_1_1_2__4
             {
             pushFollow(FOLLOW_34);
             rule__EntityFeature__Group_2_1_1_2__3__Impl();
@@ -32862,23 +33986,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__3__Impl"
-    // InternalEntityGrammar.g:9145:1: rule__EntityFeature__Group_2_1_1_2__3__Impl : ( ( rule__EntityFeature__TypeAssignment_2_1_1_2_3 ) ) ;
+    // InternalEntityGrammar.g:9457:1: rule__EntityFeature__Group_2_1_1_2__3__Impl : ( ( rule__EntityFeature__TypeAssignment_2_1_1_2_3 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9149:1: ( ( ( rule__EntityFeature__TypeAssignment_2_1_1_2_3 ) ) )
-            // InternalEntityGrammar.g:9150:1: ( ( rule__EntityFeature__TypeAssignment_2_1_1_2_3 ) )
+            // InternalEntityGrammar.g:9461:1: ( ( ( rule__EntityFeature__TypeAssignment_2_1_1_2_3 ) ) )
+            // InternalEntityGrammar.g:9462:1: ( ( rule__EntityFeature__TypeAssignment_2_1_1_2_3 ) )
             {
-            // InternalEntityGrammar.g:9150:1: ( ( rule__EntityFeature__TypeAssignment_2_1_1_2_3 ) )
-            // InternalEntityGrammar.g:9151:2: ( rule__EntityFeature__TypeAssignment_2_1_1_2_3 )
+            // InternalEntityGrammar.g:9462:1: ( ( rule__EntityFeature__TypeAssignment_2_1_1_2_3 ) )
+            // InternalEntityGrammar.g:9463:2: ( rule__EntityFeature__TypeAssignment_2_1_1_2_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_2_3()); 
             }
-            // InternalEntityGrammar.g:9152:2: ( rule__EntityFeature__TypeAssignment_2_1_1_2_3 )
-            // InternalEntityGrammar.g:9152:3: rule__EntityFeature__TypeAssignment_2_1_1_2_3
+            // InternalEntityGrammar.g:9464:2: ( rule__EntityFeature__TypeAssignment_2_1_1_2_3 )
+            // InternalEntityGrammar.g:9464:3: rule__EntityFeature__TypeAssignment_2_1_1_2_3
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__TypeAssignment_2_1_1_2_3();
@@ -32913,14 +34037,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__4"
-    // InternalEntityGrammar.g:9160:1: rule__EntityFeature__Group_2_1_1_2__4 : rule__EntityFeature__Group_2_1_1_2__4__Impl rule__EntityFeature__Group_2_1_1_2__5 ;
+    // InternalEntityGrammar.g:9472:1: rule__EntityFeature__Group_2_1_1_2__4 : rule__EntityFeature__Group_2_1_1_2__4__Impl rule__EntityFeature__Group_2_1_1_2__5 ;
     public final void rule__EntityFeature__Group_2_1_1_2__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9164:1: ( rule__EntityFeature__Group_2_1_1_2__4__Impl rule__EntityFeature__Group_2_1_1_2__5 )
-            // InternalEntityGrammar.g:9165:2: rule__EntityFeature__Group_2_1_1_2__4__Impl rule__EntityFeature__Group_2_1_1_2__5
+            // InternalEntityGrammar.g:9476:1: ( rule__EntityFeature__Group_2_1_1_2__4__Impl rule__EntityFeature__Group_2_1_1_2__5 )
+            // InternalEntityGrammar.g:9477:2: rule__EntityFeature__Group_2_1_1_2__4__Impl rule__EntityFeature__Group_2_1_1_2__5
             {
             pushFollow(FOLLOW_34);
             rule__EntityFeature__Group_2_1_1_2__4__Impl();
@@ -32951,35 +34075,35 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__4__Impl"
-    // InternalEntityGrammar.g:9172:1: rule__EntityFeature__Group_2_1_1_2__4__Impl : ( ( rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4 )? ) ;
+    // InternalEntityGrammar.g:9484:1: rule__EntityFeature__Group_2_1_1_2__4__Impl : ( ( rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9176:1: ( ( ( rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4 )? ) )
-            // InternalEntityGrammar.g:9177:1: ( ( rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4 )? )
+            // InternalEntityGrammar.g:9488:1: ( ( ( rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4 )? ) )
+            // InternalEntityGrammar.g:9489:1: ( ( rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4 )? )
             {
-            // InternalEntityGrammar.g:9177:1: ( ( rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4 )? )
-            // InternalEntityGrammar.g:9178:2: ( rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4 )?
+            // InternalEntityGrammar.g:9489:1: ( ( rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4 )? )
+            // InternalEntityGrammar.g:9490:2: ( rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getMultiplicityAssignment_2_1_1_2_4()); 
             }
-            // InternalEntityGrammar.g:9179:2: ( rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4 )?
-            int alt112=2;
-            int LA112_0 = input.LA(1);
+            // InternalEntityGrammar.g:9491:2: ( rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4 )?
+            int alt118=2;
+            int LA118_0 = input.LA(1);
 
-            if ( (LA112_0==99) ) {
-                int LA112_1 = input.LA(2);
+            if ( (LA118_0==99) ) {
+                int LA118_1 = input.LA(2);
 
-                if ( (LA112_1==33||LA112_1==53||(LA112_1>=84 && LA112_1<=86)) ) {
-                    alt112=1;
+                if ( (LA118_1==33||LA118_1==53||(LA118_1>=84 && LA118_1<=86)) ) {
+                    alt118=1;
                 }
             }
-            switch (alt112) {
+            switch (alt118) {
                 case 1 :
-                    // InternalEntityGrammar.g:9179:3: rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4
+                    // InternalEntityGrammar.g:9491:3: rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__MultiplicityAssignment_2_1_1_2_4();
@@ -33017,14 +34141,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__5"
-    // InternalEntityGrammar.g:9187:1: rule__EntityFeature__Group_2_1_1_2__5 : rule__EntityFeature__Group_2_1_1_2__5__Impl rule__EntityFeature__Group_2_1_1_2__6 ;
+    // InternalEntityGrammar.g:9499:1: rule__EntityFeature__Group_2_1_1_2__5 : rule__EntityFeature__Group_2_1_1_2__5__Impl rule__EntityFeature__Group_2_1_1_2__6 ;
     public final void rule__EntityFeature__Group_2_1_1_2__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9191:1: ( rule__EntityFeature__Group_2_1_1_2__5__Impl rule__EntityFeature__Group_2_1_1_2__6 )
-            // InternalEntityGrammar.g:9192:2: rule__EntityFeature__Group_2_1_1_2__5__Impl rule__EntityFeature__Group_2_1_1_2__6
+            // InternalEntityGrammar.g:9503:1: ( rule__EntityFeature__Group_2_1_1_2__5__Impl rule__EntityFeature__Group_2_1_1_2__6 )
+            // InternalEntityGrammar.g:9504:2: rule__EntityFeature__Group_2_1_1_2__5__Impl rule__EntityFeature__Group_2_1_1_2__6
             {
             pushFollow(FOLLOW_34);
             rule__EntityFeature__Group_2_1_1_2__5__Impl();
@@ -33055,31 +34179,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__5__Impl"
-    // InternalEntityGrammar.g:9199:1: rule__EntityFeature__Group_2_1_1_2__5__Impl : ( ( rule__EntityFeature__Group_2_1_1_2_5__0 )? ) ;
+    // InternalEntityGrammar.g:9511:1: rule__EntityFeature__Group_2_1_1_2__5__Impl : ( ( rule__EntityFeature__Group_2_1_1_2_5__0 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9203:1: ( ( ( rule__EntityFeature__Group_2_1_1_2_5__0 )? ) )
-            // InternalEntityGrammar.g:9204:1: ( ( rule__EntityFeature__Group_2_1_1_2_5__0 )? )
+            // InternalEntityGrammar.g:9515:1: ( ( ( rule__EntityFeature__Group_2_1_1_2_5__0 )? ) )
+            // InternalEntityGrammar.g:9516:1: ( ( rule__EntityFeature__Group_2_1_1_2_5__0 )? )
             {
-            // InternalEntityGrammar.g:9204:1: ( ( rule__EntityFeature__Group_2_1_1_2_5__0 )? )
-            // InternalEntityGrammar.g:9205:2: ( rule__EntityFeature__Group_2_1_1_2_5__0 )?
+            // InternalEntityGrammar.g:9516:1: ( ( rule__EntityFeature__Group_2_1_1_2_5__0 )? )
+            // InternalEntityGrammar.g:9517:2: ( rule__EntityFeature__Group_2_1_1_2_5__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_5()); 
             }
-            // InternalEntityGrammar.g:9206:2: ( rule__EntityFeature__Group_2_1_1_2_5__0 )?
-            int alt113=2;
-            int LA113_0 = input.LA(1);
+            // InternalEntityGrammar.g:9518:2: ( rule__EntityFeature__Group_2_1_1_2_5__0 )?
+            int alt119=2;
+            int LA119_0 = input.LA(1);
 
-            if ( (LA113_0==99) ) {
-                alt113=1;
+            if ( (LA119_0==99) ) {
+                alt119=1;
             }
-            switch (alt113) {
+            switch (alt119) {
                 case 1 :
-                    // InternalEntityGrammar.g:9206:3: rule__EntityFeature__Group_2_1_1_2_5__0
+                    // InternalEntityGrammar.g:9518:3: rule__EntityFeature__Group_2_1_1_2_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_2_5__0();
@@ -33117,16 +34241,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__6"
-    // InternalEntityGrammar.g:9214:1: rule__EntityFeature__Group_2_1_1_2__6 : rule__EntityFeature__Group_2_1_1_2__6__Impl rule__EntityFeature__Group_2_1_1_2__7 ;
+    // InternalEntityGrammar.g:9526:1: rule__EntityFeature__Group_2_1_1_2__6 : rule__EntityFeature__Group_2_1_1_2__6__Impl rule__EntityFeature__Group_2_1_1_2__7 ;
     public final void rule__EntityFeature__Group_2_1_1_2__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9218:1: ( rule__EntityFeature__Group_2_1_1_2__6__Impl rule__EntityFeature__Group_2_1_1_2__7 )
-            // InternalEntityGrammar.g:9219:2: rule__EntityFeature__Group_2_1_1_2__6__Impl rule__EntityFeature__Group_2_1_1_2__7
+            // InternalEntityGrammar.g:9530:1: ( rule__EntityFeature__Group_2_1_1_2__6__Impl rule__EntityFeature__Group_2_1_1_2__7 )
+            // InternalEntityGrammar.g:9531:2: rule__EntityFeature__Group_2_1_1_2__6__Impl rule__EntityFeature__Group_2_1_1_2__7
             {
-            pushFollow(FOLLOW_46);
+            pushFollow(FOLLOW_47);
             rule__EntityFeature__Group_2_1_1_2__6__Impl();
 
             state._fsp--;
@@ -33155,23 +34279,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__6__Impl"
-    // InternalEntityGrammar.g:9226:1: rule__EntityFeature__Group_2_1_1_2__6__Impl : ( ( rule__EntityFeature__NameAssignment_2_1_1_2_6 ) ) ;
+    // InternalEntityGrammar.g:9538:1: rule__EntityFeature__Group_2_1_1_2__6__Impl : ( ( rule__EntityFeature__NameAssignment_2_1_1_2_6 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9230:1: ( ( ( rule__EntityFeature__NameAssignment_2_1_1_2_6 ) ) )
-            // InternalEntityGrammar.g:9231:1: ( ( rule__EntityFeature__NameAssignment_2_1_1_2_6 ) )
+            // InternalEntityGrammar.g:9542:1: ( ( ( rule__EntityFeature__NameAssignment_2_1_1_2_6 ) ) )
+            // InternalEntityGrammar.g:9543:1: ( ( rule__EntityFeature__NameAssignment_2_1_1_2_6 ) )
             {
-            // InternalEntityGrammar.g:9231:1: ( ( rule__EntityFeature__NameAssignment_2_1_1_2_6 ) )
-            // InternalEntityGrammar.g:9232:2: ( rule__EntityFeature__NameAssignment_2_1_1_2_6 )
+            // InternalEntityGrammar.g:9543:1: ( ( rule__EntityFeature__NameAssignment_2_1_1_2_6 ) )
+            // InternalEntityGrammar.g:9544:2: ( rule__EntityFeature__NameAssignment_2_1_1_2_6 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_2_6()); 
             }
-            // InternalEntityGrammar.g:9233:2: ( rule__EntityFeature__NameAssignment_2_1_1_2_6 )
-            // InternalEntityGrammar.g:9233:3: rule__EntityFeature__NameAssignment_2_1_1_2_6
+            // InternalEntityGrammar.g:9545:2: ( rule__EntityFeature__NameAssignment_2_1_1_2_6 )
+            // InternalEntityGrammar.g:9545:3: rule__EntityFeature__NameAssignment_2_1_1_2_6
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__NameAssignment_2_1_1_2_6();
@@ -33206,16 +34330,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__7"
-    // InternalEntityGrammar.g:9241:1: rule__EntityFeature__Group_2_1_1_2__7 : rule__EntityFeature__Group_2_1_1_2__7__Impl rule__EntityFeature__Group_2_1_1_2__8 ;
+    // InternalEntityGrammar.g:9553:1: rule__EntityFeature__Group_2_1_1_2__7 : rule__EntityFeature__Group_2_1_1_2__7__Impl rule__EntityFeature__Group_2_1_1_2__8 ;
     public final void rule__EntityFeature__Group_2_1_1_2__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9245:1: ( rule__EntityFeature__Group_2_1_1_2__7__Impl rule__EntityFeature__Group_2_1_1_2__8 )
-            // InternalEntityGrammar.g:9246:2: rule__EntityFeature__Group_2_1_1_2__7__Impl rule__EntityFeature__Group_2_1_1_2__8
+            // InternalEntityGrammar.g:9557:1: ( rule__EntityFeature__Group_2_1_1_2__7__Impl rule__EntityFeature__Group_2_1_1_2__8 )
+            // InternalEntityGrammar.g:9558:2: rule__EntityFeature__Group_2_1_1_2__7__Impl rule__EntityFeature__Group_2_1_1_2__8
             {
-            pushFollow(FOLLOW_46);
+            pushFollow(FOLLOW_47);
             rule__EntityFeature__Group_2_1_1_2__7__Impl();
 
             state._fsp--;
@@ -33244,31 +34368,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__7__Impl"
-    // InternalEntityGrammar.g:9253:1: rule__EntityFeature__Group_2_1_1_2__7__Impl : ( ( rule__EntityFeature__Group_2_1_1_2_7__0 )? ) ;
+    // InternalEntityGrammar.g:9565:1: rule__EntityFeature__Group_2_1_1_2__7__Impl : ( ( rule__EntityFeature__Group_2_1_1_2_7__0 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9257:1: ( ( ( rule__EntityFeature__Group_2_1_1_2_7__0 )? ) )
-            // InternalEntityGrammar.g:9258:1: ( ( rule__EntityFeature__Group_2_1_1_2_7__0 )? )
+            // InternalEntityGrammar.g:9569:1: ( ( ( rule__EntityFeature__Group_2_1_1_2_7__0 )? ) )
+            // InternalEntityGrammar.g:9570:1: ( ( rule__EntityFeature__Group_2_1_1_2_7__0 )? )
             {
-            // InternalEntityGrammar.g:9258:1: ( ( rule__EntityFeature__Group_2_1_1_2_7__0 )? )
-            // InternalEntityGrammar.g:9259:2: ( rule__EntityFeature__Group_2_1_1_2_7__0 )?
+            // InternalEntityGrammar.g:9570:1: ( ( rule__EntityFeature__Group_2_1_1_2_7__0 )? )
+            // InternalEntityGrammar.g:9571:2: ( rule__EntityFeature__Group_2_1_1_2_7__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_7()); 
             }
-            // InternalEntityGrammar.g:9260:2: ( rule__EntityFeature__Group_2_1_1_2_7__0 )?
-            int alt114=2;
-            int LA114_0 = input.LA(1);
+            // InternalEntityGrammar.g:9572:2: ( rule__EntityFeature__Group_2_1_1_2_7__0 )?
+            int alt120=2;
+            int LA120_0 = input.LA(1);
 
-            if ( (LA114_0==166) ) {
-                alt114=1;
+            if ( (LA120_0==169) ) {
+                alt120=1;
             }
-            switch (alt114) {
+            switch (alt120) {
                 case 1 :
-                    // InternalEntityGrammar.g:9260:3: rule__EntityFeature__Group_2_1_1_2_7__0
+                    // InternalEntityGrammar.g:9572:3: rule__EntityFeature__Group_2_1_1_2_7__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_2_7__0();
@@ -33306,16 +34430,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__8"
-    // InternalEntityGrammar.g:9268:1: rule__EntityFeature__Group_2_1_1_2__8 : rule__EntityFeature__Group_2_1_1_2__8__Impl rule__EntityFeature__Group_2_1_1_2__9 ;
+    // InternalEntityGrammar.g:9580:1: rule__EntityFeature__Group_2_1_1_2__8 : rule__EntityFeature__Group_2_1_1_2__8__Impl rule__EntityFeature__Group_2_1_1_2__9 ;
     public final void rule__EntityFeature__Group_2_1_1_2__8() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9272:1: ( rule__EntityFeature__Group_2_1_1_2__8__Impl rule__EntityFeature__Group_2_1_1_2__9 )
-            // InternalEntityGrammar.g:9273:2: rule__EntityFeature__Group_2_1_1_2__8__Impl rule__EntityFeature__Group_2_1_1_2__9
+            // InternalEntityGrammar.g:9584:1: ( rule__EntityFeature__Group_2_1_1_2__8__Impl rule__EntityFeature__Group_2_1_1_2__9 )
+            // InternalEntityGrammar.g:9585:2: rule__EntityFeature__Group_2_1_1_2__8__Impl rule__EntityFeature__Group_2_1_1_2__9
             {
-            pushFollow(FOLLOW_46);
+            pushFollow(FOLLOW_47);
             rule__EntityFeature__Group_2_1_1_2__8__Impl();
 
             state._fsp--;
@@ -33344,31 +34468,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__8__Impl"
-    // InternalEntityGrammar.g:9280:1: rule__EntityFeature__Group_2_1_1_2__8__Impl : ( ( rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8 )? ) ;
+    // InternalEntityGrammar.g:9592:1: rule__EntityFeature__Group_2_1_1_2__8__Impl : ( ( rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__8__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9284:1: ( ( ( rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8 )? ) )
-            // InternalEntityGrammar.g:9285:1: ( ( rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8 )? )
+            // InternalEntityGrammar.g:9596:1: ( ( ( rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8 )? ) )
+            // InternalEntityGrammar.g:9597:1: ( ( rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8 )? )
             {
-            // InternalEntityGrammar.g:9285:1: ( ( rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8 )? )
-            // InternalEntityGrammar.g:9286:2: ( rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8 )?
+            // InternalEntityGrammar.g:9597:1: ( ( rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8 )? )
+            // InternalEntityGrammar.g:9598:2: ( rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getAsKanbanStateAssignment_2_1_1_2_8()); 
             }
-            // InternalEntityGrammar.g:9287:2: ( rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8 )?
-            int alt115=2;
-            int LA115_0 = input.LA(1);
+            // InternalEntityGrammar.g:9599:2: ( rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8 )?
+            int alt121=2;
+            int LA121_0 = input.LA(1);
 
-            if ( (LA115_0==167) ) {
-                alt115=1;
+            if ( (LA121_0==170) ) {
+                alt121=1;
             }
-            switch (alt115) {
+            switch (alt121) {
                 case 1 :
-                    // InternalEntityGrammar.g:9287:3: rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8
+                    // InternalEntityGrammar.g:9599:3: rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__AsKanbanStateAssignment_2_1_1_2_8();
@@ -33406,16 +34530,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__9"
-    // InternalEntityGrammar.g:9295:1: rule__EntityFeature__Group_2_1_1_2__9 : rule__EntityFeature__Group_2_1_1_2__9__Impl rule__EntityFeature__Group_2_1_1_2__10 ;
+    // InternalEntityGrammar.g:9607:1: rule__EntityFeature__Group_2_1_1_2__9 : rule__EntityFeature__Group_2_1_1_2__9__Impl rule__EntityFeature__Group_2_1_1_2__10 ;
     public final void rule__EntityFeature__Group_2_1_1_2__9() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9299:1: ( rule__EntityFeature__Group_2_1_1_2__9__Impl rule__EntityFeature__Group_2_1_1_2__10 )
-            // InternalEntityGrammar.g:9300:2: rule__EntityFeature__Group_2_1_1_2__9__Impl rule__EntityFeature__Group_2_1_1_2__10
+            // InternalEntityGrammar.g:9611:1: ( rule__EntityFeature__Group_2_1_1_2__9__Impl rule__EntityFeature__Group_2_1_1_2__10 )
+            // InternalEntityGrammar.g:9612:2: rule__EntityFeature__Group_2_1_1_2__9__Impl rule__EntityFeature__Group_2_1_1_2__10
             {
-            pushFollow(FOLLOW_46);
+            pushFollow(FOLLOW_47);
             rule__EntityFeature__Group_2_1_1_2__9__Impl();
 
             state._fsp--;
@@ -33444,31 +34568,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__9__Impl"
-    // InternalEntityGrammar.g:9307:1: rule__EntityFeature__Group_2_1_1_2__9__Impl : ( ( rule__EntityFeature__Group_2_1_1_2_9__0 )? ) ;
+    // InternalEntityGrammar.g:9619:1: rule__EntityFeature__Group_2_1_1_2__9__Impl : ( ( rule__EntityFeature__Group_2_1_1_2_9__0 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__9__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9311:1: ( ( ( rule__EntityFeature__Group_2_1_1_2_9__0 )? ) )
-            // InternalEntityGrammar.g:9312:1: ( ( rule__EntityFeature__Group_2_1_1_2_9__0 )? )
+            // InternalEntityGrammar.g:9623:1: ( ( ( rule__EntityFeature__Group_2_1_1_2_9__0 )? ) )
+            // InternalEntityGrammar.g:9624:1: ( ( rule__EntityFeature__Group_2_1_1_2_9__0 )? )
             {
-            // InternalEntityGrammar.g:9312:1: ( ( rule__EntityFeature__Group_2_1_1_2_9__0 )? )
-            // InternalEntityGrammar.g:9313:2: ( rule__EntityFeature__Group_2_1_1_2_9__0 )?
+            // InternalEntityGrammar.g:9624:1: ( ( rule__EntityFeature__Group_2_1_1_2_9__0 )? )
+            // InternalEntityGrammar.g:9625:2: ( rule__EntityFeature__Group_2_1_1_2_9__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_9()); 
             }
-            // InternalEntityGrammar.g:9314:2: ( rule__EntityFeature__Group_2_1_1_2_9__0 )?
-            int alt116=2;
-            int LA116_0 = input.LA(1);
+            // InternalEntityGrammar.g:9626:2: ( rule__EntityFeature__Group_2_1_1_2_9__0 )?
+            int alt122=2;
+            int LA122_0 = input.LA(1);
 
-            if ( (LA116_0==168) ) {
-                alt116=1;
+            if ( (LA122_0==171) ) {
+                alt122=1;
             }
-            switch (alt116) {
+            switch (alt122) {
                 case 1 :
-                    // InternalEntityGrammar.g:9314:3: rule__EntityFeature__Group_2_1_1_2_9__0
+                    // InternalEntityGrammar.g:9626:3: rule__EntityFeature__Group_2_1_1_2_9__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_2_9__0();
@@ -33506,16 +34630,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__10"
-    // InternalEntityGrammar.g:9322:1: rule__EntityFeature__Group_2_1_1_2__10 : rule__EntityFeature__Group_2_1_1_2__10__Impl rule__EntityFeature__Group_2_1_1_2__11 ;
+    // InternalEntityGrammar.g:9634:1: rule__EntityFeature__Group_2_1_1_2__10 : rule__EntityFeature__Group_2_1_1_2__10__Impl rule__EntityFeature__Group_2_1_1_2__11 ;
     public final void rule__EntityFeature__Group_2_1_1_2__10() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9326:1: ( rule__EntityFeature__Group_2_1_1_2__10__Impl rule__EntityFeature__Group_2_1_1_2__11 )
-            // InternalEntityGrammar.g:9327:2: rule__EntityFeature__Group_2_1_1_2__10__Impl rule__EntityFeature__Group_2_1_1_2__11
+            // InternalEntityGrammar.g:9638:1: ( rule__EntityFeature__Group_2_1_1_2__10__Impl rule__EntityFeature__Group_2_1_1_2__11 )
+            // InternalEntityGrammar.g:9639:2: rule__EntityFeature__Group_2_1_1_2__10__Impl rule__EntityFeature__Group_2_1_1_2__11
             {
-            pushFollow(FOLLOW_46);
+            pushFollow(FOLLOW_47);
             rule__EntityFeature__Group_2_1_1_2__10__Impl();
 
             state._fsp--;
@@ -33544,31 +34668,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__10__Impl"
-    // InternalEntityGrammar.g:9334:1: rule__EntityFeature__Group_2_1_1_2__10__Impl : ( ( rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10 )? ) ;
+    // InternalEntityGrammar.g:9646:1: rule__EntityFeature__Group_2_1_1_2__10__Impl : ( ( rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__10__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9338:1: ( ( ( rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10 )? ) )
-            // InternalEntityGrammar.g:9339:1: ( ( rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10 )? )
+            // InternalEntityGrammar.g:9650:1: ( ( ( rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10 )? ) )
+            // InternalEntityGrammar.g:9651:1: ( ( rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10 )? )
             {
-            // InternalEntityGrammar.g:9339:1: ( ( rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10 )? )
-            // InternalEntityGrammar.g:9340:2: ( rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10 )?
+            // InternalEntityGrammar.g:9651:1: ( ( rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10 )? )
+            // InternalEntityGrammar.g:9652:2: ( rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getPersistenceInfoAssignment_2_1_1_2_10()); 
             }
-            // InternalEntityGrammar.g:9341:2: ( rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10 )?
-            int alt117=2;
-            int LA117_0 = input.LA(1);
+            // InternalEntityGrammar.g:9653:2: ( rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10 )?
+            int alt123=2;
+            int LA123_0 = input.LA(1);
 
-            if ( (LA117_0==90) ) {
-                alt117=1;
+            if ( (LA123_0==90) ) {
+                alt123=1;
             }
-            switch (alt117) {
+            switch (alt123) {
                 case 1 :
-                    // InternalEntityGrammar.g:9341:3: rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10
+                    // InternalEntityGrammar.g:9653:3: rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_10();
@@ -33606,16 +34730,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__11"
-    // InternalEntityGrammar.g:9349:1: rule__EntityFeature__Group_2_1_1_2__11 : rule__EntityFeature__Group_2_1_1_2__11__Impl rule__EntityFeature__Group_2_1_1_2__12 ;
+    // InternalEntityGrammar.g:9661:1: rule__EntityFeature__Group_2_1_1_2__11 : rule__EntityFeature__Group_2_1_1_2__11__Impl rule__EntityFeature__Group_2_1_1_2__12 ;
     public final void rule__EntityFeature__Group_2_1_1_2__11() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9353:1: ( rule__EntityFeature__Group_2_1_1_2__11__Impl rule__EntityFeature__Group_2_1_1_2__12 )
-            // InternalEntityGrammar.g:9354:2: rule__EntityFeature__Group_2_1_1_2__11__Impl rule__EntityFeature__Group_2_1_1_2__12
+            // InternalEntityGrammar.g:9665:1: ( rule__EntityFeature__Group_2_1_1_2__11__Impl rule__EntityFeature__Group_2_1_1_2__12 )
+            // InternalEntityGrammar.g:9666:2: rule__EntityFeature__Group_2_1_1_2__11__Impl rule__EntityFeature__Group_2_1_1_2__12
             {
-            pushFollow(FOLLOW_46);
+            pushFollow(FOLLOW_47);
             rule__EntityFeature__Group_2_1_1_2__11__Impl();
 
             state._fsp--;
@@ -33644,31 +34768,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__11__Impl"
-    // InternalEntityGrammar.g:9361:1: rule__EntityFeature__Group_2_1_1_2__11__Impl : ( ( rule__EntityFeature__Group_2_1_1_2_11__0 )? ) ;
+    // InternalEntityGrammar.g:9673:1: rule__EntityFeature__Group_2_1_1_2__11__Impl : ( ( rule__EntityFeature__Group_2_1_1_2_11__0 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__11__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9365:1: ( ( ( rule__EntityFeature__Group_2_1_1_2_11__0 )? ) )
-            // InternalEntityGrammar.g:9366:1: ( ( rule__EntityFeature__Group_2_1_1_2_11__0 )? )
+            // InternalEntityGrammar.g:9677:1: ( ( ( rule__EntityFeature__Group_2_1_1_2_11__0 )? ) )
+            // InternalEntityGrammar.g:9678:1: ( ( rule__EntityFeature__Group_2_1_1_2_11__0 )? )
             {
-            // InternalEntityGrammar.g:9366:1: ( ( rule__EntityFeature__Group_2_1_1_2_11__0 )? )
-            // InternalEntityGrammar.g:9367:2: ( rule__EntityFeature__Group_2_1_1_2_11__0 )?
+            // InternalEntityGrammar.g:9678:1: ( ( rule__EntityFeature__Group_2_1_1_2_11__0 )? )
+            // InternalEntityGrammar.g:9679:2: ( rule__EntityFeature__Group_2_1_1_2_11__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11()); 
             }
-            // InternalEntityGrammar.g:9368:2: ( rule__EntityFeature__Group_2_1_1_2_11__0 )?
-            int alt118=2;
-            int LA118_0 = input.LA(1);
+            // InternalEntityGrammar.g:9680:2: ( rule__EntityFeature__Group_2_1_1_2_11__0 )?
+            int alt124=2;
+            int LA124_0 = input.LA(1);
 
-            if ( (LA118_0==101) ) {
-                alt118=1;
+            if ( (LA124_0==101) ) {
+                alt124=1;
             }
-            switch (alt118) {
+            switch (alt124) {
                 case 1 :
-                    // InternalEntityGrammar.g:9368:3: rule__EntityFeature__Group_2_1_1_2_11__0
+                    // InternalEntityGrammar.g:9680:3: rule__EntityFeature__Group_2_1_1_2_11__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_2_11__0();
@@ -33706,20 +34830,25 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__12"
-    // InternalEntityGrammar.g:9376:1: rule__EntityFeature__Group_2_1_1_2__12 : rule__EntityFeature__Group_2_1_1_2__12__Impl ;
+    // InternalEntityGrammar.g:9688:1: rule__EntityFeature__Group_2_1_1_2__12 : rule__EntityFeature__Group_2_1_1_2__12__Impl rule__EntityFeature__Group_2_1_1_2__13 ;
     public final void rule__EntityFeature__Group_2_1_1_2__12() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9380:1: ( rule__EntityFeature__Group_2_1_1_2__12__Impl )
-            // InternalEntityGrammar.g:9381:2: rule__EntityFeature__Group_2_1_1_2__12__Impl
+            // InternalEntityGrammar.g:9692:1: ( rule__EntityFeature__Group_2_1_1_2__12__Impl rule__EntityFeature__Group_2_1_1_2__13 )
+            // InternalEntityGrammar.g:9693:2: rule__EntityFeature__Group_2_1_1_2__12__Impl rule__EntityFeature__Group_2_1_1_2__13
             {
-            pushFollow(FOLLOW_2);
+            pushFollow(FOLLOW_47);
             rule__EntityFeature__Group_2_1_1_2__12__Impl();
 
             state._fsp--;
             if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_1_1_2__13();
+
+            state._fsp--;
+            if (state.failed) return ;
 
             }
 
@@ -33739,31 +34868,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__12__Impl"
-    // InternalEntityGrammar.g:9387:1: rule__EntityFeature__Group_2_1_1_2__12__Impl : ( ( rule__EntityFeature__Group_2_1_1_2_12__0 )? ) ;
+    // InternalEntityGrammar.g:9700:1: rule__EntityFeature__Group_2_1_1_2__12__Impl : ( ( rule__EntityFeature__Group_2_1_1_2_12__0 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_2__12__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9391:1: ( ( ( rule__EntityFeature__Group_2_1_1_2_12__0 )? ) )
-            // InternalEntityGrammar.g:9392:1: ( ( rule__EntityFeature__Group_2_1_1_2_12__0 )? )
+            // InternalEntityGrammar.g:9704:1: ( ( ( rule__EntityFeature__Group_2_1_1_2_12__0 )? ) )
+            // InternalEntityGrammar.g:9705:1: ( ( rule__EntityFeature__Group_2_1_1_2_12__0 )? )
             {
-            // InternalEntityGrammar.g:9392:1: ( ( rule__EntityFeature__Group_2_1_1_2_12__0 )? )
-            // InternalEntityGrammar.g:9393:2: ( rule__EntityFeature__Group_2_1_1_2_12__0 )?
+            // InternalEntityGrammar.g:9705:1: ( ( rule__EntityFeature__Group_2_1_1_2_12__0 )? )
+            // InternalEntityGrammar.g:9706:2: ( rule__EntityFeature__Group_2_1_1_2_12__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_12()); 
             }
-            // InternalEntityGrammar.g:9394:2: ( rule__EntityFeature__Group_2_1_1_2_12__0 )?
-            int alt119=2;
-            int LA119_0 = input.LA(1);
+            // InternalEntityGrammar.g:9707:2: ( rule__EntityFeature__Group_2_1_1_2_12__0 )?
+            int alt125=2;
+            int LA125_0 = input.LA(1);
 
-            if ( (LA119_0==102) ) {
-                alt119=1;
+            if ( (LA125_0==165) ) {
+                alt125=1;
             }
-            switch (alt119) {
+            switch (alt125) {
                 case 1 :
-                    // InternalEntityGrammar.g:9394:3: rule__EntityFeature__Group_2_1_1_2_12__0
+                    // InternalEntityGrammar.g:9707:3: rule__EntityFeature__Group_2_1_1_2_12__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_2_12__0();
@@ -33800,15 +34929,110 @@
     // $ANTLR end "rule__EntityFeature__Group_2_1_1_2__12__Impl"
 
 
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__13"
+    // InternalEntityGrammar.g:9715:1: rule__EntityFeature__Group_2_1_1_2__13 : rule__EntityFeature__Group_2_1_1_2__13__Impl ;
+    public final void rule__EntityFeature__Group_2_1_1_2__13() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:9719:1: ( rule__EntityFeature__Group_2_1_1_2__13__Impl )
+            // InternalEntityGrammar.g:9720:2: rule__EntityFeature__Group_2_1_1_2__13__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__EntityFeature__Group_2_1_1_2__13__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_2__13"
+
+
+    // $ANTLR start "rule__EntityFeature__Group_2_1_1_2__13__Impl"
+    // InternalEntityGrammar.g:9726:1: rule__EntityFeature__Group_2_1_1_2__13__Impl : ( ( rule__EntityFeature__Group_2_1_1_2_13__0 )? ) ;
+    public final void rule__EntityFeature__Group_2_1_1_2__13__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:9730:1: ( ( ( rule__EntityFeature__Group_2_1_1_2_13__0 )? ) )
+            // InternalEntityGrammar.g:9731:1: ( ( rule__EntityFeature__Group_2_1_1_2_13__0 )? )
+            {
+            // InternalEntityGrammar.g:9731:1: ( ( rule__EntityFeature__Group_2_1_1_2_13__0 )? )
+            // InternalEntityGrammar.g:9732:2: ( rule__EntityFeature__Group_2_1_1_2_13__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_13()); 
+            }
+            // InternalEntityGrammar.g:9733:2: ( rule__EntityFeature__Group_2_1_1_2_13__0 )?
+            int alt126=2;
+            int LA126_0 = input.LA(1);
+
+            if ( (LA126_0==102) ) {
+                alt126=1;
+            }
+            switch (alt126) {
+                case 1 :
+                    // InternalEntityGrammar.g:9733:3: rule__EntityFeature__Group_2_1_1_2_13__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__Group_2_1_1_2_13__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_13()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Group_2_1_1_2__13__Impl"
+
+
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_5__0"
-    // InternalEntityGrammar.g:9403:1: rule__EntityFeature__Group_2_1_1_2_5__0 : rule__EntityFeature__Group_2_1_1_2_5__0__Impl rule__EntityFeature__Group_2_1_1_2_5__1 ;
+    // InternalEntityGrammar.g:9742:1: rule__EntityFeature__Group_2_1_1_2_5__0 : rule__EntityFeature__Group_2_1_1_2_5__0__Impl rule__EntityFeature__Group_2_1_1_2_5__1 ;
     public final void rule__EntityFeature__Group_2_1_1_2_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9407:1: ( rule__EntityFeature__Group_2_1_1_2_5__0__Impl rule__EntityFeature__Group_2_1_1_2_5__1 )
-            // InternalEntityGrammar.g:9408:2: rule__EntityFeature__Group_2_1_1_2_5__0__Impl rule__EntityFeature__Group_2_1_1_2_5__1
+            // InternalEntityGrammar.g:9746:1: ( rule__EntityFeature__Group_2_1_1_2_5__0__Impl rule__EntityFeature__Group_2_1_1_2_5__1 )
+            // InternalEntityGrammar.g:9747:2: rule__EntityFeature__Group_2_1_1_2_5__0__Impl rule__EntityFeature__Group_2_1_1_2_5__1
             {
             pushFollow(FOLLOW_37);
             rule__EntityFeature__Group_2_1_1_2_5__0__Impl();
@@ -33839,17 +35063,17 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_5__0__Impl"
-    // InternalEntityGrammar.g:9415:1: rule__EntityFeature__Group_2_1_1_2_5__0__Impl : ( '[' ) ;
+    // InternalEntityGrammar.g:9754:1: rule__EntityFeature__Group_2_1_1_2_5__0__Impl : ( '[' ) ;
     public final void rule__EntityFeature__Group_2_1_1_2_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9419:1: ( ( '[' ) )
-            // InternalEntityGrammar.g:9420:1: ( '[' )
+            // InternalEntityGrammar.g:9758:1: ( ( '[' ) )
+            // InternalEntityGrammar.g:9759:1: ( '[' )
             {
-            // InternalEntityGrammar.g:9420:1: ( '[' )
-            // InternalEntityGrammar.g:9421:2: '['
+            // InternalEntityGrammar.g:9759:1: ( '[' )
+            // InternalEntityGrammar.g:9760:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_2_5_0()); 
@@ -33880,14 +35104,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_5__1"
-    // InternalEntityGrammar.g:9430:1: rule__EntityFeature__Group_2_1_1_2_5__1 : rule__EntityFeature__Group_2_1_1_2_5__1__Impl rule__EntityFeature__Group_2_1_1_2_5__2 ;
+    // InternalEntityGrammar.g:9769:1: rule__EntityFeature__Group_2_1_1_2_5__1 : rule__EntityFeature__Group_2_1_1_2_5__1__Impl rule__EntityFeature__Group_2_1_1_2_5__2 ;
     public final void rule__EntityFeature__Group_2_1_1_2_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9434:1: ( rule__EntityFeature__Group_2_1_1_2_5__1__Impl rule__EntityFeature__Group_2_1_1_2_5__2 )
-            // InternalEntityGrammar.g:9435:2: rule__EntityFeature__Group_2_1_1_2_5__1__Impl rule__EntityFeature__Group_2_1_1_2_5__2
+            // InternalEntityGrammar.g:9773:1: ( rule__EntityFeature__Group_2_1_1_2_5__1__Impl rule__EntityFeature__Group_2_1_1_2_5__2 )
+            // InternalEntityGrammar.g:9774:2: rule__EntityFeature__Group_2_1_1_2_5__1__Impl rule__EntityFeature__Group_2_1_1_2_5__2
             {
             pushFollow(FOLLOW_37);
             rule__EntityFeature__Group_2_1_1_2_5__1__Impl();
@@ -33918,35 +35142,35 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_5__1__Impl"
-    // InternalEntityGrammar.g:9442:1: rule__EntityFeature__Group_2_1_1_2_5__1__Impl : ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1 )* ) ;
+    // InternalEntityGrammar.g:9781:1: rule__EntityFeature__Group_2_1_1_2_5__1__Impl : ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1 )* ) ;
     public final void rule__EntityFeature__Group_2_1_1_2_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9446:1: ( ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1 )* ) )
-            // InternalEntityGrammar.g:9447:1: ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1 )* )
+            // InternalEntityGrammar.g:9785:1: ( ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1 )* ) )
+            // InternalEntityGrammar.g:9786:1: ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1 )* )
             {
-            // InternalEntityGrammar.g:9447:1: ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1 )* )
-            // InternalEntityGrammar.g:9448:2: ( rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1 )*
+            // InternalEntityGrammar.g:9786:1: ( ( rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1 )* )
+            // InternalEntityGrammar.g:9787:2: ( rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_1_1_2_5_1()); 
             }
-            // InternalEntityGrammar.g:9449:2: ( rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1 )*
-            loop120:
+            // InternalEntityGrammar.g:9788:2: ( rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1 )*
+            loop127:
             do {
-                int alt120=2;
-                int LA120_0 = input.LA(1);
+                int alt127=2;
+                int LA127_0 = input.LA(1);
 
-                if ( (LA120_0==113||(LA120_0>=117 && LA120_0<=128)) ) {
-                    alt120=1;
+                if ( (LA127_0==113||(LA127_0>=117 && LA127_0<=128)) ) {
+                    alt127=1;
                 }
 
 
-                switch (alt120) {
+                switch (alt127) {
             	case 1 :
-            	    // InternalEntityGrammar.g:9449:3: rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1
+            	    // InternalEntityGrammar.g:9788:3: rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1
             	    {
             	    pushFollow(FOLLOW_38);
             	    rule__EntityFeature__ConstraintsAssignment_2_1_1_2_5_1();
@@ -33958,7 +35182,7 @@
             	    break;
 
             	default :
-            	    break loop120;
+            	    break loop127;
                 }
             } while (true);
 
@@ -33987,14 +35211,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_5__2"
-    // InternalEntityGrammar.g:9457:1: rule__EntityFeature__Group_2_1_1_2_5__2 : rule__EntityFeature__Group_2_1_1_2_5__2__Impl ;
+    // InternalEntityGrammar.g:9796:1: rule__EntityFeature__Group_2_1_1_2_5__2 : rule__EntityFeature__Group_2_1_1_2_5__2__Impl ;
     public final void rule__EntityFeature__Group_2_1_1_2_5__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9461:1: ( rule__EntityFeature__Group_2_1_1_2_5__2__Impl )
-            // InternalEntityGrammar.g:9462:2: rule__EntityFeature__Group_2_1_1_2_5__2__Impl
+            // InternalEntityGrammar.g:9800:1: ( rule__EntityFeature__Group_2_1_1_2_5__2__Impl )
+            // InternalEntityGrammar.g:9801:2: rule__EntityFeature__Group_2_1_1_2_5__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Group_2_1_1_2_5__2__Impl();
@@ -34020,17 +35244,17 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_5__2__Impl"
-    // InternalEntityGrammar.g:9468:1: rule__EntityFeature__Group_2_1_1_2_5__2__Impl : ( ']' ) ;
+    // InternalEntityGrammar.g:9807:1: rule__EntityFeature__Group_2_1_1_2_5__2__Impl : ( ']' ) ;
     public final void rule__EntityFeature__Group_2_1_1_2_5__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9472:1: ( ( ']' ) )
-            // InternalEntityGrammar.g:9473:1: ( ']' )
+            // InternalEntityGrammar.g:9811:1: ( ( ']' ) )
+            // InternalEntityGrammar.g:9812:1: ( ']' )
             {
-            // InternalEntityGrammar.g:9473:1: ( ']' )
-            // InternalEntityGrammar.g:9474:2: ']'
+            // InternalEntityGrammar.g:9812:1: ( ']' )
+            // InternalEntityGrammar.g:9813:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_2_5_2()); 
@@ -34061,16 +35285,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_7__0"
-    // InternalEntityGrammar.g:9484:1: rule__EntityFeature__Group_2_1_1_2_7__0 : rule__EntityFeature__Group_2_1_1_2_7__0__Impl rule__EntityFeature__Group_2_1_1_2_7__1 ;
+    // InternalEntityGrammar.g:9823:1: rule__EntityFeature__Group_2_1_1_2_7__0 : rule__EntityFeature__Group_2_1_1_2_7__0__Impl rule__EntityFeature__Group_2_1_1_2_7__1 ;
     public final void rule__EntityFeature__Group_2_1_1_2_7__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9488:1: ( rule__EntityFeature__Group_2_1_1_2_7__0__Impl rule__EntityFeature__Group_2_1_1_2_7__1 )
-            // InternalEntityGrammar.g:9489:2: rule__EntityFeature__Group_2_1_1_2_7__0__Impl rule__EntityFeature__Group_2_1_1_2_7__1
+            // InternalEntityGrammar.g:9827:1: ( rule__EntityFeature__Group_2_1_1_2_7__0__Impl rule__EntityFeature__Group_2_1_1_2_7__1 )
+            // InternalEntityGrammar.g:9828:2: rule__EntityFeature__Group_2_1_1_2_7__0__Impl rule__EntityFeature__Group_2_1_1_2_7__1
             {
-            pushFollow(FOLLOW_47);
+            pushFollow(FOLLOW_48);
             rule__EntityFeature__Group_2_1_1_2_7__0__Impl();
 
             state._fsp--;
@@ -34099,23 +35323,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_7__0__Impl"
-    // InternalEntityGrammar.g:9496:1: rule__EntityFeature__Group_2_1_1_2_7__0__Impl : ( ( rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0 ) ) ;
+    // InternalEntityGrammar.g:9835:1: rule__EntityFeature__Group_2_1_1_2_7__0__Impl : ( ( rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_2_7__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9500:1: ( ( ( rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0 ) ) )
-            // InternalEntityGrammar.g:9501:1: ( ( rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0 ) )
+            // InternalEntityGrammar.g:9839:1: ( ( ( rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0 ) ) )
+            // InternalEntityGrammar.g:9840:1: ( ( rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0 ) )
             {
-            // InternalEntityGrammar.g:9501:1: ( ( rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0 ) )
-            // InternalEntityGrammar.g:9502:2: ( rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0 )
+            // InternalEntityGrammar.g:9840:1: ( ( rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0 ) )
+            // InternalEntityGrammar.g:9841:2: ( rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getOnKanbanCardAssignment_2_1_1_2_7_0()); 
             }
-            // InternalEntityGrammar.g:9503:2: ( rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0 )
-            // InternalEntityGrammar.g:9503:3: rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0
+            // InternalEntityGrammar.g:9842:2: ( rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0 )
+            // InternalEntityGrammar.g:9842:3: rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__OnKanbanCardAssignment_2_1_1_2_7_0();
@@ -34150,14 +35374,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_7__1"
-    // InternalEntityGrammar.g:9511:1: rule__EntityFeature__Group_2_1_1_2_7__1 : rule__EntityFeature__Group_2_1_1_2_7__1__Impl ;
+    // InternalEntityGrammar.g:9850:1: rule__EntityFeature__Group_2_1_1_2_7__1 : rule__EntityFeature__Group_2_1_1_2_7__1__Impl ;
     public final void rule__EntityFeature__Group_2_1_1_2_7__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9515:1: ( rule__EntityFeature__Group_2_1_1_2_7__1__Impl )
-            // InternalEntityGrammar.g:9516:2: rule__EntityFeature__Group_2_1_1_2_7__1__Impl
+            // InternalEntityGrammar.g:9854:1: ( rule__EntityFeature__Group_2_1_1_2_7__1__Impl )
+            // InternalEntityGrammar.g:9855:2: rule__EntityFeature__Group_2_1_1_2_7__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Group_2_1_1_2_7__1__Impl();
@@ -34183,23 +35407,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_7__1__Impl"
-    // InternalEntityGrammar.g:9522:1: rule__EntityFeature__Group_2_1_1_2_7__1__Impl : ( ( rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1 ) ) ;
+    // InternalEntityGrammar.g:9861:1: rule__EntityFeature__Group_2_1_1_2_7__1__Impl : ( ( rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_2_7__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9526:1: ( ( ( rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1 ) ) )
-            // InternalEntityGrammar.g:9527:1: ( ( rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1 ) )
+            // InternalEntityGrammar.g:9865:1: ( ( ( rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1 ) ) )
+            // InternalEntityGrammar.g:9866:1: ( ( rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1 ) )
             {
-            // InternalEntityGrammar.g:9527:1: ( ( rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1 ) )
-            // InternalEntityGrammar.g:9528:2: ( rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1 )
+            // InternalEntityGrammar.g:9866:1: ( ( rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1 ) )
+            // InternalEntityGrammar.g:9867:2: ( rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getOnKanbanCardStatesAssignment_2_1_1_2_7_1()); 
             }
-            // InternalEntityGrammar.g:9529:2: ( rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1 )
-            // InternalEntityGrammar.g:9529:3: rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1
+            // InternalEntityGrammar.g:9868:2: ( rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1 )
+            // InternalEntityGrammar.g:9868:3: rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__OnKanbanCardStatesAssignment_2_1_1_2_7_1();
@@ -34234,16 +35458,16 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_9__0"
-    // InternalEntityGrammar.g:9538:1: rule__EntityFeature__Group_2_1_1_2_9__0 : rule__EntityFeature__Group_2_1_1_2_9__0__Impl rule__EntityFeature__Group_2_1_1_2_9__1 ;
+    // InternalEntityGrammar.g:9877:1: rule__EntityFeature__Group_2_1_1_2_9__0 : rule__EntityFeature__Group_2_1_1_2_9__0__Impl rule__EntityFeature__Group_2_1_1_2_9__1 ;
     public final void rule__EntityFeature__Group_2_1_1_2_9__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9542:1: ( rule__EntityFeature__Group_2_1_1_2_9__0__Impl rule__EntityFeature__Group_2_1_1_2_9__1 )
-            // InternalEntityGrammar.g:9543:2: rule__EntityFeature__Group_2_1_1_2_9__0__Impl rule__EntityFeature__Group_2_1_1_2_9__1
+            // InternalEntityGrammar.g:9881:1: ( rule__EntityFeature__Group_2_1_1_2_9__0__Impl rule__EntityFeature__Group_2_1_1_2_9__1 )
+            // InternalEntityGrammar.g:9882:2: rule__EntityFeature__Group_2_1_1_2_9__0__Impl rule__EntityFeature__Group_2_1_1_2_9__1
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_49);
             rule__EntityFeature__Group_2_1_1_2_9__0__Impl();
 
             state._fsp--;
@@ -34272,23 +35496,23 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_9__0__Impl"
-    // InternalEntityGrammar.g:9550:1: rule__EntityFeature__Group_2_1_1_2_9__0__Impl : ( ( rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0 ) ) ;
+    // InternalEntityGrammar.g:9889:1: rule__EntityFeature__Group_2_1_1_2_9__0__Impl : ( ( rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0 ) ) ;
     public final void rule__EntityFeature__Group_2_1_1_2_9__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9554:1: ( ( ( rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0 ) ) )
-            // InternalEntityGrammar.g:9555:1: ( ( rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0 ) )
+            // InternalEntityGrammar.g:9893:1: ( ( ( rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0 ) ) )
+            // InternalEntityGrammar.g:9894:1: ( ( rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0 ) )
             {
-            // InternalEntityGrammar.g:9555:1: ( ( rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0 ) )
-            // InternalEntityGrammar.g:9556:2: ( rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0 )
+            // InternalEntityGrammar.g:9894:1: ( ( rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0 ) )
+            // InternalEntityGrammar.g:9895:2: ( rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getAsKanbanOrderingAssignment_2_1_1_2_9_0()); 
             }
-            // InternalEntityGrammar.g:9557:2: ( rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0 )
-            // InternalEntityGrammar.g:9557:3: rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0
+            // InternalEntityGrammar.g:9896:2: ( rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0 )
+            // InternalEntityGrammar.g:9896:3: rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__AsKanbanOrderingAssignment_2_1_1_2_9_0();
@@ -34323,14 +35547,14 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_9__1"
-    // InternalEntityGrammar.g:9565:1: rule__EntityFeature__Group_2_1_1_2_9__1 : rule__EntityFeature__Group_2_1_1_2_9__1__Impl ;
+    // InternalEntityGrammar.g:9904:1: rule__EntityFeature__Group_2_1_1_2_9__1 : rule__EntityFeature__Group_2_1_1_2_9__1__Impl ;
     public final void rule__EntityFeature__Group_2_1_1_2_9__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9569:1: ( rule__EntityFeature__Group_2_1_1_2_9__1__Impl )
-            // InternalEntityGrammar.g:9570:2: rule__EntityFeature__Group_2_1_1_2_9__1__Impl
+            // InternalEntityGrammar.g:9908:1: ( rule__EntityFeature__Group_2_1_1_2_9__1__Impl )
+            // InternalEntityGrammar.g:9909:2: rule__EntityFeature__Group_2_1_1_2_9__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EntityFeature__Group_2_1_1_2_9__1__Impl();
@@ -34356,31 +35580,31 @@
 
 
     // $ANTLR start "rule__EntityFeature__Group_2_1_1_2_9__1__Impl"
-    // InternalEntityGrammar.g:9576:1: rule__EntityFeature__Group_2_1_1_2_9__1__Impl : ( ( rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1 )? ) ;
+    // InternalEntityGrammar.g:9915:1: rule__EntityFeature__Group_2_1_1_2_9__1__Impl : ( ( rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1 )? ) ;
     public final void rule__EntityFeature__Group_2_1_1_2_9__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:9580:1: ( ( ( rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1 )? ) )
-            // InternalEntityGrammar.g:9581:1: ( ( rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1 )? )
+            // InternalEntityGrammar.g:9919:1: ( ( ( rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1 )? ) )
+            // InternalEntityGrammar.g:9920:1: ( ( rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1 )? )
             {
-            // InternalEntityGrammar.g:9581:1: ( ( rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1 )? )
-            // InternalEntityGrammar.g:9582:2: ( rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1 )?
+            // InternalEntityGrammar.g:9920:1: ( ( rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1 )? )
+            // InternalEntityGrammar.g:9921:2: ( rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getEntityFeatureAccess().getDecentKanbanOrderAssignment_2_1_1_2_9_1()); 
             }
-            // InternalEntityGrammar.g:9583:2: ( rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1 )?
-            int alt121=2;
-            int LA121_0 = input.LA(1);
+            // InternalEntityGrammar.g:9922:2: ( rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_9_1 )?
+            int alt128=2;
+            int LA128_0 = input.LA(1);
 
-            if ( (LA121_0==169) ) {
-                alt121=1;
+            if ( (LA128_0==172) ) {
+                alt128=1;
             }