catch up with branch development

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.gitignore b/.gitignore
index cad8a61..c0204f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,9 @@
 **/bin/
 **/target/
-**._trace
+**.java._trace
 **git.properties
-**.log.properties
-git.properties
+**log.properties
+**/.antlr-generator-*.jar
 **/target/
 **/.metadata/
 
@@ -35,5 +35,5 @@
 **/*.uibin
 **/*.uisemanticbin
 **/*.xtendbin
-**/*.xtextbin
+
 
diff --git a/.project b/.project
index 0cea2b3..825ca3a 100644
--- a/.project
+++ b/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>org.eclipse.osbp.xtext.entitymock.common</name>
+	<name>org.eclipse.osbp.xtext.functionlibrarydsl.aggregator</name>
 	<comment></comment>
 	<projects>
 	</projects>
@@ -10,6 +10,11 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.m2e.core.maven2Nature</nature>
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
similarity index 100%
copy from org.eclipse.osbp.xtext.entitymock.common.feature/.settings/org.eclipse.m2e.core.prefs
copy to .settings/org.eclipse.m2e.core.prefs
diff --git a/epl-v10.html b/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/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/jenkins.build.config.xml b/jenkins.build.config.xml
index 5dc8f0e..24b5481 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -1,24 +1,35 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--#======================================================================= -->
-<!--# Copyright (c) 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)    	 -->
+<!--# Copyright (c) 2016 - Loetz GmbH&Co.KG                                    -->
 <!--# All rights reserved. This program and the accompanying materials 		 -->
 <!--# are made available under the terms of the Eclipse Public License v1.0  -->
 <!--# which accompanies this distribution, and is available at               -->
 <!--# http://www.eclipse.org/legal/epl-v10.html                              -->
 <!--#                                                                        -->
 <!--# Contributors:                                                          -->
-<!--# Loetz GmbH&Co.KG - initial API and implementation                      -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation                           -->
 <!--#======================================================================= -->
 <!--# Module specific parameters for the Jenkins Job 						 -->
 <!--#======================================================================= -->
+
 <jenkins>
 	<!-- DO NOT EDIT BELOW THIS LINE -->
         <jenkins.build.dependencies>
-                <jenkins.build.dependency>org.eclipse.osbp.core.api</jenkins.build.dependency>
-                <jenkins.build.dependency>org.eclipse.osbp.datainterchange.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.authentication</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.bpm</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.bpm.api</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
-                <jenkins.build.dependency>org.eclipse.osbp.jpa.services</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.eventbroker</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.utils</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.vaaclipse</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.addons</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.basic</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.datamart.common</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.functionlibrary.common</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.i18n</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.oxtype</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.table.common</jenkins.build.dependency>
         </jenkins.build.dependencies>
 </jenkins>
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/.gitignore b/org.eclipse.osbp.xtext.entitymock.common.feature/.gitignore
deleted file mode 100644
index b83d222..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/.project b/org.eclipse.osbp.xtext.entitymock.common.feature/.project
deleted file mode 100644
index 9f679f2..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.osbp.xtext.entitymock.common.feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/LICENSE.txt b/org.eclipse.osbp.xtext.entitymock.common.feature/LICENSE.txt
deleted file mode 100644
index ff42ad4..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/LICENSE.txt
+++ /dev/null
@@ -1,161 +0,0 @@
-Eclipse Public License -v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-1. DEFINITIONS
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
-
-b) in the case of each subsequent Contributor:
-
-i) changes to the Program, and
-
-ii) additions to the Program;
-
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
-
-2. GRANT OF RIGHTS
-
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
-
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
-
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
-
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
-
-3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
-
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/build.properties b/org.eclipse.osbp.xtext.entitymock.common.feature/build.properties
deleted file mode 100644
index 0ea4044..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/build.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-bin.includes = feature.xml,\
-               feature.properties,\
-               notice.html,\
-               license.html,\
-               LICENSE.txt,\
-               epl-v10.html
-src.includes = license.html,\
-               LICENSE.txt,\
-               notice.html,\
-               epl-v10.html			   
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/epl-v10.html b/org.eclipse.osbp.xtext.entitymock.common.feature/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/feature.properties b/org.eclipse.osbp.xtext.entitymock.common.feature/feature.properties
deleted file mode 100644
index 5419a1c..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/feature.properties
+++ /dev/null
@@ -1,172 +0,0 @@
-#=======================================================================
-# Copyright (c) 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 v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-# Loetz GmbH&Co.KG - initial API and implementation 
-#=======================================================================
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName =OSBP xtext.entitymock.common 
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse OSBP
-
-# "description" property - description of the feature
-description=This feature provides the OSBP xtext.entitymock.common bundle.
-
-# "updateSiteName" property - label for the update site
-updateSiteName=
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). \n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    Loetz GmbH&amp;Co.KG - initial API and basis\n\
-
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse Foundation source code\n\
-repository ("Repository") in software modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
-Update License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-\n\Use of Provisioning Technology\n\
-\n\
-The Eclipse Foundation makes available provisioning software, examples of which include,\n\
-but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
-the purpose of allowing users to install software, documentation, information and/or\n\
-other materials (collectively "Installable Software"). This capability is provided with\n\
-the intent of allowing such users to install, extend and update Eclipse-based products.\n\
-Information about packaging Installable Software is available at\n\
-http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
-\n\
-You may use Provisioning Technology to allow other parties to install Installable Software.\n\
-You shall be responsible for enabling the applicable license agreements relating to the\n\
-Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
-in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
-making it available in accordance with the Specification, you further acknowledge your\n\
-agreement to, and the acquisition of all necessary rights to permit the following:\n\
-\n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/feature.xml b/org.eclipse.osbp.xtext.entitymock.common.feature/feature.xml
deleted file mode 100644
index 30913d4..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/feature.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-        id="org.eclipse.osbp.xtext.entitymock.common.feature"
-        label="%featureName"
-        version="0.9.0.qualifier"
-        provider-name="%providerName"
-		plugin="org.eclipse.osbp.xtext.entitymock.common">
-        
-    <description>
-        %description
-    </description>
-        
-    <copyright>
-        %copyright
-    </copyright>
-        
-    <license url="%licenseURL">
-        %license
-    </license>
-        
-    <plugin
-        id="org.eclipse.osbp.xtext.entitymock.common"
-        download-size="0"
-        install-size="0"
-        version="0.0.0"
-        unpack="false"/>
-        
-        
-        
-</feature>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/license.html b/org.eclipse.osbp.xtext.entitymock.common.feature/license.html
deleted file mode 100644
index 6e579a5..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/license.html
+++ /dev/null
@@ -1,164 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
-
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/notice.html b/org.eclipse.osbp.xtext.entitymock.common.feature/notice.html
deleted file mode 100644
index c3d34c3..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/notice.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 9, 2014</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/pom.xml b/org.eclipse.osbp.xtext.entitymock.common.feature/pom.xml
deleted file mode 100644
index 843cf54..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/pom.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-#=======================================================================
-# Copyright (c) 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 v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-# Loetz GmbH&Co.KG - initial API and implementation 
-#=======================================================================
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.eclipse.osbp.xtext.entitymock.common</groupId>
-        <artifactId>org.eclipse.osbp.xtext.entitymock.common.aggregator</artifactId>
-        <version>0.9.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>org.eclipse.osbp.xtext.entitymock.common.feature</artifactId>
-    <packaging>eclipse-feature</packaging>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.eclipse.tycho.extras</groupId>
-                <artifactId>tycho-source-feature-plugin</artifactId>
-                <version>${tychoExtrasVersion}</version>
-                <executions>
-                    <execution>
-                        <id>source-feature</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>source-feature</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <labelSuffix> (source)</labelSuffix>
-                </configuration>
-            </plugin>
-            <plugin>
-                <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250 
-					is not fixed -->
-                <groupId>org.eclipse.tycho</groupId>
-                <artifactId>tycho-p2-plugin</artifactId>
-                <version>${tycho-version}</version>
-                <executions>
-                    <execution>
-                        <id>attached-p2-metadata</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>p2-metadata</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-			<plugin>
-				<artifactId>maven-javadoc-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>javadoc-jar</id>
-						<phase>package</phase>
-						<goals>
-							<goal>jar</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-        </plugins>
-    </build>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.eclipse.osbp.xtext.entitymock.common</groupId>
-            <artifactId>org.eclipse.osbp.xtext.entitymock.common</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-
-</project>
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/src/main/javadoc/README.txt b/org.eclipse.osbp.xtext.entitymock.common.feature/src/main/javadoc/README.txt
deleted file mode 100644
index 831da7e..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/src/main/javadoc/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/src/overview.html b/org.eclipse.osbp.xtext.entitymock.common.feature/src/overview.html
deleted file mode 100644
index 2cabaf7..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/src/overview.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>OSBP xtext.entitymock.common</title>
-</head>
-<body>
-<p>The <strong>OSBP&nbsp;xtext.entitymock.common</strong> provides bundles for the OSBP xtext.entitymock.common functionality.</p>
-</body>
-</html>
diff --git a/org.eclipse.osbp.xtext.entitymock.common/.gitignore b/org.eclipse.osbp.xtext.entitymock.common/.gitignore
deleted file mode 100644
index 92145bc..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/bin/
-/target/
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.entitymock.common/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.xtext.entitymock.common/.settings/com.vaadin.integration.eclipse.prefs
deleted file mode 100644
index e1173bc..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/.settings/com.vaadin.integration.eclipse.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-com.vaadin.integration.eclipse.previousCompileAction=widgetset
-eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.bpmn2.modeler.core.prefs b/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.bpmn2.modeler.core.prefs
deleted file mode 100644
index 4bffcea..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.bpmn2.modeler.core.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-target.runtime=org.jboss.runtime.jbpm5
diff --git a/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index a698e59..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,12 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.pde.core.prefs b/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index f29e940..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.xtend.core.Xtend.prefs
deleted file mode 100644
index 0933f8c..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.xtend.core.Xtend.prefs
+++ /dev/null
@@ -1,10 +0,0 @@
-//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
-eclipse.preferences.version=1
-is_project_specific=true
-outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
-outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
-outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
-outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
-outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
-outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
-outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.xtext.entitymock.common/LICENSE.txt b/org.eclipse.osbp.xtext.entitymock.common/LICENSE.txt
deleted file mode 100644
index ff42ad4..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/LICENSE.txt
+++ /dev/null
@@ -1,161 +0,0 @@
-Eclipse Public License -v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-1. DEFINITIONS
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
-
-b) in the case of each subsequent Contributor:
-
-i) changes to the Program, and
-
-ii) additions to the Program;
-
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
-
-2. GRANT OF RIGHTS
-
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
-
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
-
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
-
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
-
-3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
-
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.entitymock.common/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.entitymock.common/META-INF/MANIFEST.MF
deleted file mode 100644
index 80343b7..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,51 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: org.eclipse.osbp.xtext.entitymock.common
-Bundle-SymbolicName: org.eclipse.osbp.xtext.entitymock.common;singleton:=true
-Bundle-Version: 0.9.0.qualifier
-Bundle-ClassPath: .
-Bundle-Vendor: Eclipse OSBP
-Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Require-Bundle: org.slf4j.api;bundle-version="1.7.2";resolution:=optional,
- org.apache.log4j;resolution:=optional,
- org.apache.xerces;bundle-version="2.9.0",
- org.apache.commons.lang;bundle-version="2.6.0",
- org.apache.commons.logging,
- org.eclipse.core.runtime,
- org.antlr.runtime,
- com.google.inject;bundle-version="3.0.0",
- org.eclipse.emf.common,
- org.eclipse.emf.ecore;visibility:=reexport,
- org.eclipse.emf.ecore.xcore,
- org.eclipse.emf.ecore.xcore.lib,
- org.eclipse.emf.codegen.ecore;resolution:=optional,
- org.eclipse.emf.mwe.utils;resolution:=optional,
- org.eclipse.xtend.lib;bundle-version="[2.11.0,2.12.0)",
- org.eclipse.xtext;bundle-version="[2.11.0,2.12.0)",
- org.eclipse.xtext.common.types;bundle-version="[2.11.0,2.12.0)";visibility:=reexport,
- org.eclipse.xtext.xbase;bundle-version="[2.11.0,2.12.0)";visibility:=reexport,
- org.eclipse.xtext.xbase.lib;bundle-version="[2.11.0,2.12.0)",
- org.eclipse.xtext.generator;bundle-version="[2.11.0,2.12.0)";resolution:=optional,
- org.eclipse.xtext.util;bundle-version="[2.11.0,2.12.0)",
- org.junit;bundle-version="4.10.0",
- org.objectweb.asm;bundle-version="[5.0.1,6.0.0)",
- org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
- org.apache.commons.lang3;bundle-version="3.4.0",
- org.eclipse.osbp.datainterchange.api
-Import-Package: javax.validation,
- javax.validation.constraints,
- org.apache.log4j,
- org.eclipse.osbp.core.api.persistence;version="0.9.0",
- org.eclipse.osbp.dsl.common.datatypes;version="0.9.0",
- org.eclipse.osbp.dsl.dto.lib.impl;version="0.9.0",
- org.eclipse.osbp.jpa.services,
- org.eclipse.osbp.runtime.common.event;version="0.9.0",
- org.eclipse.osbp.runtime.common.filter;version="0.9.0",
- org.eclipse.osbp.ui.api.customfields;version="0.9.0",
- org.joda.time;version="2.7.0",
- org.joda.time.base;version="2.7.0"
-Export-Package: org.eclipse.osbp.xtext.entitymock.common;version="0.9.0",
- org.eclipse.osbp.xtext.entitymock.common.filler;version="0.9.0",
- org.eclipse.osbp.xtext.entitymock.common.filler.test;version="0.9.0"
diff --git a/org.eclipse.osbp.xtext.entitymock.common/README.txt b/org.eclipse.osbp.xtext.entitymock.common/README.txt
deleted file mode 100644
index 5d6d62e..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/README.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Your code for xtext.entitymock.common goes in here.
-
-Add all your sources as you usually do for plugin development.
-
-If you need more bundles to implement the feature, duplicate this folder and ad the new bundle code into the copy
-
-Do not forget to add your new bundle to the 
- - feature pom.xml
- - feature feature.xml
- - and the aggregator pom.xml
-as it is done for this bundle.
-
-Have fun!
-
-
-You can delete this file from the final project.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.entitymock.common/about.html b/org.eclipse.osbp.xtext.entitymock.common/about.html
deleted file mode 100644
index 64c0598..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>June 1, 2016</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.entitymock.common/about.ini b/org.eclipse.osbp.xtext.entitymock.common/about.ini
deleted file mode 100644
index 7df671f..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/about.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-# about.ini
-# contains information about a feature
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in about.properties
-# This file does not need to be translated.
-
-# Property "aboutText" contains blurb for "About" dialog (translated)
-aboutText=%featureText
-
-# Property "featureImage" contains path to feature image (32x32)
-featureImage=
-
-# Property "appName" contains name of the application (translated)
-appName=%featureName
-
-# Property "welcomePage" contains path to welcome page (special XML-based format)
-welcomePage=
diff --git a/org.eclipse.osbp.xtext.entitymock.common/about.mappings b/org.eclipse.osbp.xtext.entitymock.common/about.mappings
deleted file mode 100644
index 4511a0a..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/about.mappings
+++ /dev/null
@@ -1,6 +0,0 @@
-# about.mappings
-# contains fill-ins for about.properties
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file does not need to be translated.
-
-0=qualifier
diff --git a/org.eclipse.osbp.xtext.entitymock.common/about.properties b/org.eclipse.osbp.xtext.entitymock.common/about.properties
deleted file mode 100644
index 58eb7bd..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/about.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Copyright (c) 2017 - Loetz GmbH&Co.KG (Heidelberg)
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#    Loetz GmbH&Co - initial API and implementation
-#
-
-# NLS_MESSAGEFORMAT_VAR
-
-featureName=xtext.entitymock.common
-
-################ blurb property ####################################
-featureText=\
-Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    Loetz GmbH&Co - implementation\n
-################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.entitymock.common/about_files/README.txt b/org.eclipse.osbp.xtext.entitymock.common/about_files/README.txt
deleted file mode 100644
index cc50489..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/about_files/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-All external licenses referenced in about file go here
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.entitymock.common/build.properties b/org.eclipse.osbp.xtext.entitymock.common/build.properties
deleted file mode 100644
index 6511c7e..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/build.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-output.. = target/classes/
-bin.includes = META-INF/,\
-               .,\
-               about.html,\
-               about.ini,\
-               about.mappings,\
-               about.properties,\
-               notice.html,\
-               license.html,\
-               LICENSE.txt,\
-               epl-v10.html
-src.includes = license.html,\
-               LICENSE.txt,\
-               about.html,\
-               about.ini,\
-               about.mappings,\
-               about.properties,\
-               notice.html,\
-               epl-v10.html			   
-source.. = src/
diff --git a/org.eclipse.osbp.xtext.entitymock.common/epl-v10.html b/org.eclipse.osbp.xtext.entitymock.common/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.entitymock.common/license.html b/org.eclipse.osbp.xtext.entitymock.common/license.html
deleted file mode 100644
index 6e579a5..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/license.html
+++ /dev/null
@@ -1,164 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
-
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.entitymock.common/notice.html b/org.eclipse.osbp.xtext.entitymock.common/notice.html
deleted file mode 100644
index c3d34c3..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/notice.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 9, 2014</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/org.eclipse.osbp.xtext.entitymock.common/pom.xml b/org.eclipse.osbp.xtext.entitymock.common/pom.xml
deleted file mode 100644
index 407ef43..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/pom.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-#=======================================================================
-# Copyright (c) 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 v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-# Loetz GmbH&Co.KG - initial API and implementation 
-#=======================================================================
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.eclipse.osbp.xtext.entitymock.common</groupId>
-        <artifactId>org.eclipse.osbp.xtext.entitymock.common.aggregator</artifactId>
-        <version>0.9.0-SNAPSHOT</version>
-        <relativePath>..</relativePath>
-    </parent>
-
-    <artifactId>org.eclipse.osbp.xtext.entitymock.common</artifactId>
-    <packaging>eclipse-plugin</packaging>
-
-    <build>
-        <sourceDirectory>src</sourceDirectory>
-    </build>
-
-	</project>
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/ABaseMockEntity.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/ABaseMockEntity.java
deleted file mode 100644
index 8b08c69..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/ABaseMockEntity.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-
-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.runtime.common.filter.IDTOService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class ABaseMockEntity<E> extends ABaseMockObject {
-	
-	private static final Logger log = LoggerFactory.getLogger(ABaseMockEntity.class);
-
-	protected static boolean asBoolean(Object value) {
-		if(value == null) {
-			return false;
-		}
-		if(value instanceof Boolean) {
-			return (Boolean)value;
-		} 
-		if(value instanceof String) {
-			return Boolean.parseBoolean(value.toString());
-		}
-		return false;
-	}
-	
-	protected static Date asDate(Object value) {
-		return (value instanceof Date) ? (Date)value : null;
-	}
-	
-	protected static double asDouble(Object value) {
-		if	(value instanceof Double) {
-			return (Double)value;
-		}
-		else if (value instanceof Float) {
-			return (Float)value;
-		}
-		else if (value == null) {
-			return 0.0;
-		}
-		return Double.parseDouble(value.toString());
-	}
-	
-	protected static float asFloat(Object value) {
-		if	(value instanceof Float) {
-			return (Float)value;
-		}
-		else if (value == null) {
-			return (float)0.0;
-		}
-		return Float.parseFloat(value.toString());
-	}
-	
-	protected static long asLong(Object value) {
-		if	(value instanceof Long) {
-			return (Long)value;
-		}
-		else if	(value instanceof Integer) {
-			return (Integer)value;
-		}
-		else if	(value instanceof Short) {
-			return (Short)value;
-		}
-		else if (value == null) {
-			return 0;
-		}
-		return Long.parseLong(value.toString());
-	}
-	
-	protected static int asInt(Object value) {
-		if	(value instanceof Integer) {
-			return (Integer)value;
-		}
-		else if	(value instanceof Short) {
-			return (Short)value;
-		}
-		else if (value == null) {
-			return 0;
-		}
-		return Integer.parseInt(value.toString());
-	}
-	
-	protected static short asShort(Object value) {
-		if	(value instanceof Short) {
-			return (Short)value;
-		}
-		else if (value == null) {
-			return 0;
-		}
-		return Short.parseShort(value.toString());
-	}
-	
-	protected static String asString(Object value) {
-		return (value == null) ? null : value.toString();
-	}
-	
-	protected final AEntityMockDataGenerator mockDataGenerator;
-	protected final String persistenceUnit;
-	
-	protected E entity;
-	
-	public ABaseMockEntity(AEntityMockDataGenerator mockDataGenerator, String persistenceUnit) {
-		this.mockDataGenerator = mockDataGenerator;
-		this.persistenceUnit = persistenceUnit;
-	}
-	
-	public final String getPersistenceUnit() {
-		return persistenceUnit;
-	}
-	
-	public abstract E generateEntity(Object iteratorItem);
-	
-	protected final void generateAttribute(String key, Class<IDto> dtoClass, double optionalFor) {
-		String mockEntityName = "Existing"+dtoClass.getSimpleName();
-		if	(mockDataGenerator.getMockObjects(mockEntityName) == null) {
-			List<Object> existingDtos = new ArrayList<>();
-			try {
-				IDTOService<?> dtoService = DtoServiceAccess.getService(dtoClass);
-				if (dtoService == null) {
-					log.error("NO DTO SERVICE FOUND for {} in persistence {}", dtoClass.getCanonicalName(), persistenceUnit);
-				}
-				else {
-					Query queryAll = new Query();
-					Collection<?> dtoObjects = dtoService.find(queryAll);
-					for (Object dtoObject : dtoObjects) {
-						existingDtos.add(dtoObject);
-					}
-				}
-			}
-			catch (Exception e) {
-				log.error("could not retrieve existing entities via dto service for "+dtoClass.getCanonicalName(), e);
-			}
-			mockDataGenerator.addMockObjects(mockEntityName, existingDtos);
-		}
-		generateAttribute(key, mockEntityName, optionalFor);
-	}
-	
-	protected final void generateAttribute(String key, String mockEntityName, double optionalFor) {
-		Object[] mockObjects = null;
-		if	(mockDataGenerator.getMockObjects(mockEntityName) != null) {
-			mockObjects = mockDataGenerator.getMockObjects(mockEntityName).toArray();
-		}
-		// --- no objects are available ---
-		if	(mockObjects == null) {
-		    getMockData().put(key, null);
-		}
-		// --- if at least 100% have to be optional, EVERYTHING is optional ---
-		else if	(optionalFor >= 1.0) {
-		    getMockData().put(key, null);                                
-		}
-		// --- if up to 0% have to be optional, EVERYTHING is mandatory ---
-		else if (optionalFor <= 0.0) {
-		    getMockData().put(key, mockObjects[getFillerProvider().unsignedinteger(mockObjects.length-1)]);                                
-		}
-		// --- if a random is lower than the given optionalFor, this item is optional ---
-		else if (getFillerProvider().unsigneddouble(0) < optionalFor*100.0) {
-		    getMockData().put(key, null);                                
-		}
-		// --- otherwise
-		else {
-			getMockData().put(key, mockObjects[getFillerProvider().unsignedinteger(mockObjects.length-1)]);
-		}
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/ABaseMockObject.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/ABaseMockObject.java
deleted file mode 100644
index cd64f32..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/ABaseMockObject.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.osbp.dsl.common.datatypes.IDto;
-import org.eclipse.osbp.xtext.entitymock.common.filler.FillerTextProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class ABaseMockObject {
-
-	private final FillerTextProvider fillerProvider;
-	private ConcurrentHashMap<String, Object> mockData = new ConcurrentHashMap<>();
-
-	private static Logger logger = LoggerFactory.getLogger("mock");
-
-	public ABaseMockObject() {
-		FillerTextProvider provider;
-		try {
-			provider = FillerTextProvider.get(Locale.getDefault());
-		} catch (Exception e) {
-			provider = null;
-			StringWriter sw = new StringWriter();
-			e.printStackTrace(new PrintWriter(sw));
-			logger.error("{}", sw.toString());
-		}
-		this.fillerProvider = provider;
-	}
-
-	public Map<String, Object> getMockData() {
-		return mockData;
-	}
-
-	public FillerTextProvider getFillerProvider() {
-		return fillerProvider;
-	}
-
-	public final Object getAttribute(String... keys) {
-		return mockData.get(StringUtils.join(keys, "."));
-	}
-
-	public final Object getAttribute(String key, AEntityMockDataGenerator mockDataGenerator) {
-		Object mockValue = mockData.get(key);
-		if ((mockValue == null) && (mockDataGenerator instanceof AEntityMockDataGenerator)) {
-			String[] keys = key.split("\\.", 2);
-			if (keys.length == 2) {
-				mockValue = mockData.get(keys[0]);
-				if (mockValue instanceof IDto) {
-					mockValue = mockDataGenerator.getDtoAttribute((IDto) mockValue, keys[1]);
-				} else {
-					mockValue = null;
-				}
-			}
-		}
-		return mockValue;
-	}
-
-	public final Set<String> getAttributeNames() {
-		return mockData.keySet();
-	}
-
-	public final ABaseMockObject generateData() {
-		fillerProvider.reset();
-		try {
-			generateDataRow();
-		} catch (Exception e) {
-			StringWriter sw = new StringWriter();
-			e.printStackTrace(new PrintWriter(sw));
-			logger.error("exception occured:{}", sw.toString());
-		}
-		replaceDigits();
-		replaceVariables();
-		return this;
-	}
-
-	protected final void replaceDigits() {
-		ConcurrentHashMap<String, Object> tmpMockData = new ConcurrentHashMap<>();
-		for (Entry<String, Object> entrySet : mockData.entrySet()) {
-			Object value = entrySet.getValue();
-			if (value instanceof String && ((String) value).contains("#")) {
-				try {
-					tmpMockData.put(entrySet.getKey(), fillerProvider.numerify((String) value));
-				} catch (Exception e) {
-					StringWriter sw = new StringWriter();
-					e.printStackTrace(new PrintWriter(sw));
-					logger.error("exception occured:{}", sw.toString());
-				}
-			} else {
-				tmpMockData.put(entrySet.getKey(), entrySet.getValue());
-			}
-		}
-		mockData = tmpMockData;
-	}
-
-	protected final void replaceVariables() {
-		ConcurrentHashMap<String, Object> tmpMockData = new ConcurrentHashMap<>();
-		for (Entry<String, Object> entrySet : mockData.entrySet()) {
-			if (entrySet.getValue() instanceof String) {
-				String[] parts = ((String) entrySet.getValue()).split("(\\[)|(\\])");
-				String value = (String) entrySet.getValue();
-				for (int i = 0; i < parts.length; i++) {
-					if (mockData.containsKey(parts[i]) && mockData.get(parts[i]) instanceof String) {
-						value = value.replace(parts[i], (String) mockData.get(parts[i])).replace("[","").replace("]", "");
-					}
-				}
-				tmpMockData.put(entrySet.getKey(), value);
-			} else {
-				tmpMockData.put(entrySet.getKey(), entrySet.getValue());
-			}
-		}
-		mockData = tmpMockData;
-	}
-
-	protected abstract void generateDataRow();
-
-	protected final void reset() {
-		mockData.clear();
-	}
-
-	protected final void setFixAttribute(String key, Object value) {
-		mockData.put(key, value);
-	}
-
-	protected final void generateAttribute(String key, String sourceKey) {
-		mockData.put(key, mockData.get(sourceKey));
-	}
-
-	protected final void generateAttribute(String key, Object[] values) {
-		mockData.put(key, values[fillerProvider.unsignedinteger(values.length - 1)]);
-	}
-
-	protected final void generateAttribute(String key, String... part) {
-		StringBuilder composite = new StringBuilder();
-		for (int i = 0; i < part.length; i++) {
-			if (mockData.containsKey(part[i])) {
-				composite.append(mockData.get(part[i]));
-			} else {
-				composite.append(part[i]);
-			}
-		}
-		mockData.put(key, composite);
-	}
-
-	protected final void generateAttribute(String key, String whenKey, Map<?, ?> valuesMap) {
-		Object[] values = (Object[]) valuesMap.get(mockData.get(whenKey));
-		if ((values == null) || values.length == 0) {
-			mockData.put(key, null);
-		} else {
-			mockData.put(key, values[fillerProvider.unsignedinteger(values.length - 1)]);
-		}
-	}
-
-	protected final void generateAttribute(String key, double[] values) {
-		mockData.put(key, values[fillerProvider.unsignedinteger(values.length - 1)]);
-	}
-
-	protected final void generateSignedAttribute(String key, int decimals, double beginRange, double endRange,
-			double rounded) {
-		mockData.put(key, fillerProvider.signeddouble(decimals, beginRange, endRange, rounded));
-	}
-
-	protected final void generateUnsignedAttribute(String key, int decimals, double beginRange, double endRange,
-			double rounded) {
-		mockData.put(key, fillerProvider.signeddouble(decimals, beginRange, endRange, rounded));
-	}
-
-	protected final void generateAttribute(String key, int[] values) {
-		mockData.put(key, values[fillerProvider.unsignedinteger(values.length - 1)]);
-	}
-
-	protected final void generateSignedAttribute(String key, int beginRange, int endRange, double rounded) {
-		mockData.put(key, fillerProvider.signedinteger(beginRange, endRange, rounded));
-	}
-
-	protected final void generateUnsignedAttribute(String key, int beginRange, int endRange, double rounded) {
-		mockData.put(key, fillerProvider.signedinteger(beginRange, endRange, rounded));
-	}
-
-	protected final void generateAttribute(String key, ABaseMockObject subObject) {
-		subObject.reset();
-		subObject.generateData();
-		for (String subkey : subObject.mockData.keySet()) {
-			mockData.put(key + "." + subkey, subObject.mockData.get(subkey));
-		}
-	}
-
-	protected final void generateBooleanAttribute(String key) {
-		mockData.put(key, fillerProvider.trueOrFalse());
-	}
-
-	protected final void generateDateAttribute(String key, int pastYears, int futureYears) {
-		mockData.put(key, fillerProvider.date(pastYears, futureYears));
-	}
-
-	protected final void generateParagraphsAttribute(String key, int count) {
-		mockData.put(key, fillerProvider.paragraphs(count));
-	}
-
-	protected final void generateSentencesAttribute(String key, int count) {
-		mockData.put(key, fillerProvider.sentences(count));
-	}
-
-	protected final void generateWordsAttribute(String key, int count) {
-		mockData.put(key, fillerProvider.words(count));
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/ABaseMockResource.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/ABaseMockResource.java
deleted file mode 100644
index f172e36..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/ABaseMockResource.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-public abstract class ABaseMockResource extends ABaseMockObject {
-	
-	protected Set<String> mockDataRows = new HashSet<>();
-	protected List<String> mockAttributes = new ArrayList<>();
-	
-	public void setAttributes(String... attributes) {
-		mockAttributes.clear();
-		for	(String attribute : attributes) {
-			mockAttributes.add(attribute);
-		}
-	}
-
-	public void addDataRow(String key, String... datarow) {
-		mockDataRows.add(key);
-		for	(int i=0; i<mockAttributes.size(); i++) {
-			if	(i<datarow.length) {
-				getMockData().put(key+"."+mockAttributes.get(i), datarow[i]);
-			}
-			else {
-				getMockData().put(key+"."+mockAttributes.get(i), "");
-			}
-		}
-	}
-	
-	public Set<String> getDataRows() {
-		return new HashSet<>(mockDataRows);
-	}
-
-	public Set<String> getAttributes() {
-		return new HashSet<>(mockAttributes);
-	}
-	
-	public final Object getAttribute(String dataRow, String attribute) {
-		return getMockData().get(dataRow+"."+attribute);
-	}
-
-	protected void generateDataRow() {
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/AEntityMockDataGenerator.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/AEntityMockDataGenerator.java
deleted file mode 100644
index 2809de4..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/AEntityMockDataGenerator.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.eclipse.osbp.dsl.common.datatypes.IDto;
-
-public abstract class AEntityMockDataGenerator extends ABaseMockObject implements IEntityMockDataGenerator {
-
-	@Override
-	public int compareTo(IEntityMockDataGenerator o) {
-		if	(getRunWithPriority() != o.getRunWithPriority()) {
-			return (new Integer(getRunWithPriority())).compareTo((new Integer(o.getRunWithPriority())));
-		}
-		else {
-			return getClass().getCanonicalName().compareTo(o.getClass().getCanonicalName());
-		}
-	}
-
-	protected Map<MockedEntityDto,List<Object>> mockDataClassMap = new LinkedHashMap<>();
-	protected Map<String,List<Object>> mockDataNamedMap = new LinkedHashMap<>();
-	protected Map<IDto,Map<String,Object>> dtoMockDataMap = new LinkedHashMap<>();
-
-	@Override
-	public int getRunWithPriority() {
-		return DEFAULT_PRIORITY;
-	}
-	
-	protected void initialize() {
-		mockDataClassMap.clear();
-		mockDataNamedMap.clear();
-		dtoMockDataMap.clear();
-	}
-
-	public void addDtoMockData(IDto dto, Map<String,Object> mockData) {
-		dtoMockDataMap.put(dto, mockData);
-	}
-	
-	public Object getDtoAttribute(IDto dto, String key) {
-		Object value = null;
-		Map<String,Object> mockData = dtoMockDataMap.get(dto);
-		if	(mockData != null) {
-			value = mockData.get(key);
-		}
-		return value;
-	}
-	
-	protected final String getClassMapIndex(Class<?> forClass, String persistenceUnit) {
-		return forClass.getCanonicalName()+"@"+persistenceUnit;
-	}
-	
-	protected List<Object> getMockObjects(Class<?> forClass, String persistenceUnit) {
-		for	(Entry<MockedEntityDto, List<Object>> entrySet : mockDataClassMap.entrySet()) {
-			if	(entrySet.getKey().equals(forClass, persistenceUnit)) {
-				return entrySet.getValue();
-			}
-		}
-		return null;	// NOSONAR
-	}
-	
-	protected List<Object> getMockObjects(String mockEntityName) {
-		return mockDataNamedMap.get(mockEntityName);
-	}
-	
-	protected void addMockObjects(String mockEntityName, List<Object> objects) {
-		mockDataNamedMap.put(mockEntityName, objects);
-	}
-	
-	protected void addMockObjects(String mockEntityName, Class<?> forClass, String persistenceUnit, List<Object> addList) {
-		List<Object> targetList;
-		targetList = getMockObjects(forClass, persistenceUnit);
-		if	(targetList==null) {
-			targetList = new ArrayList<>(addList);
-			mockDataClassMap.put(new MockedEntityDto(forClass, persistenceUnit), targetList);
-		}
-		else {
-			targetList.addAll(addList);
-		}
-		targetList = getMockObjects(mockEntityName);
-		if	(targetList==null) {
-			targetList = new ArrayList<>(addList);
-			mockDataNamedMap.put(mockEntityName, targetList);
-		}
-		else {
-			targetList.addAll(addList);
-		}
-	}
-	
-	@Deprecated
-	protected final void generateDataRow() {
-	}
-
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/IEntityImportInitializationListener.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/IEntityImportInitializationListener.java
deleted file mode 100644
index 601d7ba..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/IEntityImportInitializationListener.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common;
-
-/**
- * Interface, that each Entity import initialization provider should call regularly,
- * that may be called on startup via the entity mock generator.
- * <br>
- * 
- */
-public interface IEntityImportInitializationListener {
-	/**
-	 * Notify initialization step.
-	 *
-	 * @param stepTitle the step title
-	 * @param addSteps the add steps
-	 * @param progressOfStep the initial progress of step
-	 * @param count count of actual - sub - step
-	 * @param total total count of actual - sub - step
-	 */
-	public void notifyInitializationStep(String stepTitle, double progressOfStep, double sizeOfSubProgress, int count, int total);
-	
-	/**
-	 * @return the size of count, after which a new notification should be sent
-	 */
-	public int getInitializationSubStepNotifySize();
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/IEntityMockDataDbFiller.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/IEntityMockDataDbFiller.java
deleted file mode 100644
index e9b43e4..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/IEntityMockDataDbFiller.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common;
-
-
-/**
- * Interface, that each Entity Mock Data DB Filler has to implement
- */
-public interface IEntityMockDataDbFiller extends IEntityImportInitializationListener {
-
-	/**
-	 * Set a filter for Entity Mock Data Generators to be used.<br>
-	 * comma separated and full canonical class names<br>
-	 * Empty, null => no Entity Mock Data Generator is allowed
-	 * "*" => every Entity Mock Data Generator is allowed
-	 */
-	public void setMockDataGeneratorFilter(String filter);
-	
-	/**
-	 * Trigger filling of the DB with Entity Mock data
-	 */
-	public void triggerDbFill();
-	
-	/**
-	 * Notify initialization step.
-	 *
-	 * @param stepTitle the step title
-	 * @param addSteps the add steps
-	 * @param progressOfStep the progress of step
-	 */
-	public void notifyInitializationStep(String stepTitle, int addSteps, double progressOfStep);
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/IEntityMockDataGenerator.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/IEntityMockDataGenerator.java
deleted file mode 100644
index 8b6b528..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/IEntityMockDataGenerator.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.osbp.core.api.persistence.IPersistenceService;
-import org.eclipse.osbp.datainterchange.api.IDataInterchange;
-import org.eclipse.osbp.runtime.common.event.IEventDispatcher;
-import org.eclipse.osbp.ui.api.customfields.IBlobService;
-
-
-/**
- * Interface, that each Entity (DTO) Mock Generator has to implement
- */
-public interface IEntityMockDataGenerator extends Comparable<IEntityMockDataGenerator> {
-
-	final static int DEFAULT_PRIORITY = 10;
-
-	/**
-	 * The priority can be set in the entitymock model from 1 (highest) to 9 (almost lowest).<br>
-	 * If is not explicit set, it's default value is 10 (lowest).
-	 * 
-	 * @return the priority, this generator should run, compared to other generators
-	 */
-	public int getRunWithPriority();
-
-	/**
-	 * Run any datainterchanges references by the mock generator
-	 * 
-	 * @param persistenceService
-	 */
-	public void runDataInterchanges(IPersistenceService persistenceService, IDataInterchange dataInterchange, IEventDispatcher eventDispatcher, IBlobService blobService, IEntityMockDataDbFiller entityMockDbFiller);
-
-	/**
-	 * Generate entity DTO mock data objects, depending on the base .entitymock DSL instance.<br>
-	 * The map key holds a MockedEntityDto instance, which holds both the entity DTO class - for example <code>org.eclipse.osbp.foodmart.dtos.McustomerDto.class</code> - and the
-	 * target persistence unit.<br>
-	 * The map value is a list with generated entity DTO objects, in the example above instances of <code>org.eclipse.osbp.foodmart.dtos.McustomerDto</code>
-	 * 
-	 * @return the map and list of generated entity DTO objects
-	 */
-	public Map<MockedEntityDto, List<Object>> getMockData(IEntityMockDataDbFiller entityMockDbFiller, IPersistenceService persistenceService, IBlobService blobService);
-
-	/**
-	 * Gets the number of data interchange steps.
-	 * 
-	 * @return the data interchange steps
-	 */
-	public int getDataInterchangeSteps();
-
-	/**
-	 * Gets the number of entity mock steps.
-	 * 
-	 * @return the entity mock steps
-	 */
-	public int getEntityMockSteps();
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/Iterators.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/Iterators.java
deleted file mode 100644
index 50ec754..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/Iterators.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-public class Iterators {
-	
-	public static class IntegerIterator extends Iterators implements Iterator<Integer> {
-	    private final int until;
-	    private final int step;
-	    private int position;
-
-	    public IntegerIterator(int from, int until) {
-	    	this(from, until, 1);
-	    }
-
-	    public IntegerIterator(int from, int until, int step) {
-	    	if	(until < from) {
-	    		int swap = until;
-	    		until = from;
-	    		from = swap;
-	    	}
-	    	if	(step < 1) {
-	    		step = 1;
-	    	}
-	        this.until = until;
-	        this.step = step;
-	        position = from-step;
-	    }
-
-	    @Override
-	    public boolean hasNext() {
-	        return position < until;
-	    }
-
-	    @Override
-	    public Integer next() {
-	    	if	(!hasNext()) {
-	            throw new NoSuchElementException();
-	        }
-	        position += step;
-	        return position;
-	    }
-	}
-	
-	public static class DateIterator extends Iterators implements Iterator<Date> {
-	    private final Calendar until;
-	    private final int stepCount;
-	    private final int stepType;
-	    private Calendar position;
-
-	    private static Date toDate(String text) {
-	    	text = text.toLowerCase();
-	    	Calendar date = Calendar.getInstance(); 
-	    	if	(text.equals("yesterday")) {
-	    		date.add(Calendar.DAY_OF_YEAR, -1);
-	    	}
-	    	else if	(text.equals("today")) {
-	    	}
-	    	else if	(text.equals("tomorrow")) {
-	    		date.add(Calendar.DAY_OF_YEAR, 1);
-	    	}
-	    	else {
-	    		String[] tokens = text.split("-");
-		    	try {
-		    		if	(tokens.length == 3) {
-		    			date.set(
-	    					Integer.parseInt(tokens[0]),
-	    					Integer.parseInt(tokens[1])-1,
-	    					Integer.parseInt(tokens[2]));
-		    		}
-		    	}
-		    	catch (Exception e) {
-		    		System.err.println(e.getLocalizedMessage());
-		    	}
-	    	}
-	    	return date.getTime();
-	    }
-
-	    private static int toStepType(String text) {
-	    	switch (text.toLowerCase().charAt(0)) {
-	    		case 'y': return Calendar.YEAR;
-	    		case 'm': return Calendar.MONTH;
-	    		case 'w': return Calendar.WEEK_OF_YEAR;
-	    	}
-	    	return Calendar.DAY_OF_YEAR;
-	    }
-	    
-	    public DateIterator(String from, String until) {
-	    	this(toDate(from), toDate(until), 1, Calendar.DAY_OF_YEAR);
-	    }
-
-	    public DateIterator(Date from, Date until) {
-	    	this(from, until, 1, Calendar.DAY_OF_YEAR);
-	    }
-
-	    public DateIterator(String from, String until, int stepCount, String stepType) {
-	    	this(toDate(from), toDate(until), 1, toStepType(stepType));
-	    }
-
-	    public DateIterator(Date from, Date until, int stepCount, int stepType) {
-	    	if	(until.before(from)) {
-	    		Date swap = until;
-	    		until = from;
-	    		from = swap;
-	    	}
-	    	if	(stepCount < 1) {
-	    		stepCount = 1;
-	    	}
-	        this.until = Calendar.getInstance();
-	        this.until.setTime(until);
-	        this.stepCount = stepCount;
-	        this.stepType = stepType;
-	        position = Calendar.getInstance();
-	        position.setTime(from);
-	        position.add(stepType, -stepCount);
-	    }
-
-	    @Override
-	    public boolean hasNext() {
-	        return position.before(until);
-	    }
-
-	    @Override
-	    public Date next() {
-	    	if	(!hasNext()) {
-	            throw new NoSuchElementException();
-	        }
-	        position.add(stepType, stepCount);
-	        return position.getTime();
-	    }
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/MockedEntityDto.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/MockedEntityDto.java
deleted file mode 100644
index dbeab07..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/MockedEntityDto.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common;
-
-public class MockedEntityDto {
-
-	private final Class<?> entityDtoClass;
-	private final String persistenceUnit;
-
-	public static final String getClassMapIndex(Class<?> forClass, String persistenceUnit) {
-		return forClass.getCanonicalName()+"@"+persistenceUnit;
-	}
-	
-	public MockedEntityDto(Class<?> entityDtoClass, String persistenceUnit) {
-		this.entityDtoClass = entityDtoClass;
-		this.persistenceUnit = persistenceUnit;
-	}
-
-	public Class<?> getEntityDtoClass() {
-		return entityDtoClass;
-	}
-
-	public String getPersistenceUnit() {
-		return persistenceUnit;
-	}
-	
-	public boolean equals(Class<?> forClass, String persistenceUnit) {
-		return getClassMapIndex(forClass, persistenceUnit).equals(getClassMapIndex(this.entityDtoClass, this.persistenceUnit));
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/BaseProvider.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/BaseProvider.java
deleted file mode 100644
index d7b9634..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/BaseProvider.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common.filler;
-
-import java.util.Random;
-
-public class BaseProvider {
-
-	private final Random fRandom;
-
-	public BaseProvider() {
-		fRandom = new Random();
-	}
-	
-	public boolean trueOrFalse() {
-		return fRandom.nextBoolean();
-	}
-
-	public int randomBetween(int min, int max) {
-		int range = max - min + 1;
-		int randomInt = range > 0 ? fRandom.nextInt(range) : 0;
-		return min + randomInt;
-	}
-
-	public long randomBetween(long min, long max) {
-		long range = (max - min) + 1;
-		return min + (long) (fRandom.nextDouble() * range);
-	}
-
-	public double randomBetween(double min, double max) {
-		double range = max - min;
-		double randomDouble = range > 0 ? fRandom.nextDouble() * range : 0;
-		return min + randomDouble;
-	}
-
-	public String numerify(String numberString) {
-		StringBuilder result = new StringBuilder();
-		for	(int i=0; i < numberString.length(); i++) {
-			if	(numberString.charAt(i) == '#') {
-				result.append(Character.forDigit(randomBetween(0, 9), 10));
-			}
-			else {
-				result.append(numberString.charAt(i));
-			}
-		}
-		return result.toString();
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/DateProvider.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/DateProvider.java
deleted file mode 100644
index 7196d09..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/DateProvider.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common.filler;
-
-import org.joda.time.DateTime;
-
-public class DateProvider {
-
-	private final BaseProvider fBaseProvider;
-	
-	public DateProvider(BaseProvider baseProvider) {
-		fBaseProvider = baseProvider;
-	}
-
-	public DateTime randomDateInThePast(int yearsToPast) {
-		DateTime now = DateTime.now();
-		return randomDateBetweenTwoDates(
-			firstDayOfYear(now.getYear()-yearsToPast),
-			now
-		);
-	}
-
-	public DateTime randomDateInTheFuture(int yearsInFuture) {
-		DateTime now = DateTime.now();
-		return randomDateBetweenTwoDates(
-			now,
-			new DateTime(firstDayOfYear(now.getYear()+yearsInFuture+1).getMillis() - 1)
-		);
-	}
-
-	public DateTime randomDateBetweenYears(int startYear, int endYear) {
-		return randomDateBetweenTwoDates(
-			firstDayOfYear(startYear),
-			new DateTime(firstDayOfYear(endYear+1).getMillis() - 1)
-		);
-	}
-	
-	private DateTime firstDayOfYear(int year) {
-		return new DateTime(year, 1, 1, 0, 0);
-	}
-	
-	private DateTime randomDateBetweenTwoDates(DateTime from, DateTime to) {
-		return new DateTime(fBaseProvider.randomBetween(from.getMillis(), to.getMillis()));
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/FillerTextProvider.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/FillerTextProvider.java
deleted file mode 100644
index c1755e8..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/FillerTextProvider.java
+++ /dev/null
@@ -1,683 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common.filler;
-
-import java.sql.Date;
-import java.sql.Time;
-import java.util.HashMap;
-import java.util.Locale;
-
-import org.joda.time.DateTime;
-
-/**
- * Provides filler texts (german: Blindtext) for different data types,
- * depending on the locale set.
- * <br><br>
- * <b><u><i>Filler text</i> vs. <i>Mock object</i></u></b><br>
- * There is an essential difference between <i>Filler text</i> and <i>Mock object</i>!
- * <ul>
- * <li><b><a href="https://en.wikipedia.org/wiki/Filler_text">Filler text</a> (german: <a href="https://de.wikipedia.org/wiki/Blindtext">Blindtext</a>)</b><br>
- * [...] (also placeholder text or dummy text) is text that shares some characteristics of a real written text, but <b>is random or otherwise generated</b>. It may be used to display a sample of fonts, generate text for testing, or to spoof an e-mail spam filter. The process of using filler text is sometimes called Greeking, although <b>the text itself may be nonsense</b>, or largely Latin, as in Lorem ipsum.[...]<br>
- * [...] Mit Hilfe des Blindtextes kann die Verteilung des Textes auf der Seite (Layout oder Satzspiegel) sowie Lesbarkeit und Platzbedarf der verwendeten Schriftarten (Typografie) beurteilt werden. Er <b>besteht aus einer mehr oder minder sinnlosen Folge von Wörtern, oft auch nur aus wortähnlichen Silbenfolgen</b>. Ein bekanntes Beispiel dafür ist das „lateinische“ Lorem ipsum.[...]
- * </li>
- * <li><b><a href="https://en.wikipedia.org/wiki/Mock_object">Mock object</a> (german: <a href="https://de.wikipedia.org/wiki/Mock-Objekt">Mock-Objekt</a>)</b><br>
- * [...] are <b>simulated objects that mimic the behavior of real objects in controlled ways</b>. A programmer typically creates a mock object to test the behavior of some other object, in much the same way that a car designer uses a crash test dummy to simulate the dynamic behavior of a human in vehicle impacts.[...]<br>
- * [...] implementieren die Schnittstellen, über die das zu testende Objekt auf seine Umgebung zugreift. Sie <b>stellen sicher, dass die erwarteten Methodenaufrufe vollständig, mit den korrekten Parametern und in der erwarteten Reihenfolge durchgeführt werden</b>. Das Mock-Objekt liefert keine Echtdaten zurück, sondern <b>vorher zum Testfall passend festgelegte Werte</b>. Das Mock-Objekt kann somit dazu verwendet werden, <b>ein bestimmtes Verhalten nachzustellen</b>.[...]
- * </li>
- * </ul>
- */
-public class FillerTextProvider {
-
-	private static HashMap<Locale, FillerTextProvider> sProviders = new HashMap<>();
-	private final BaseProvider fBaseProducer;
-	private final DateProvider fDateProducer;
-	private final TextProvider fTextProducer;
-	private final Locale fLocale;
-	
-	/**
-	 *  Get the provider for the given locale. The provider will be cached!
-	 *  @see #destroy()
-	 *  @param locale
-	 *  @return the provider
-	 */
-	public static FillerTextProvider get(Locale locale) {
-		FillerTextProvider provider = sProviders.get(locale);
-		if	(provider == null) {
-			provider = new FillerTextProvider(locale);
-			sProviders.put(locale, provider);
-		}
-		return provider;
-	}
-	
-	private FillerTextProvider(Locale locale) {
-		fLocale = locale;
-		fBaseProducer = new BaseProvider();
-		fDateProducer = new DateProvider(fBaseProducer);
-		fTextProducer = new TextProvider(fBaseProducer, fLocale);
-	}
-	
-	/**
-	 *  The provider is removed from the cache
-	 *  @see #get(Locale)
-	 */
-	public void destroy() {
-		sProviders.remove(this);
-	}
-	
-	/**
-	 *  The provider uses some internal objects to return consistent filled text,
-	 *  for example first, last, full name and email.<br>
-	 *  To force the provider to generate new internal objects, call {@link #reset()}!<br>
-	 *  This could be necessary, if more than one data row has to be generated.
-	 */
-	public void reset() {
-//		fPerson = null;
-	}
-	
-	/**
-	 *  generate a filled text for the given {@link javax.sql.Types}
-	 *  @see #generate(FillerTextType, Object...) 
-	 *  @param type any supported java.sql.Types
-	 *  @param params
-	 *  @return the generated filler text object
-	 */
-	public Object generate(int type, Object...params) {
-		return generate(FillerTextType.typeFor(type), params);
-	}
-	
-	/**
-	 *  generate a filled text for the given type string
-	 *  @see #generate(FillerTextType, Object...) 
-	 *  @param type string, can be any <u>case insensitive</u> name of {@link FillerTextType}
-	 *  @param params
-	 *  @return the generated filler text object
-	 */
-	public Object generate(String type, Object...params) {
-		return generate(FillerTextType.typeFor(type), params);
-	}
-
-	/**
-	 *  generate a filled text for the given {@link FillerTextType}
-	 *  @param type
-	 *  @param params, see source code and the corresponding methods for supported paramaters
-	 *  @return the generated filler text object
-	 */
-	public Object generate(FillerTextType type, Object...params) {
-		if	((params.length == 1) && (params[0] instanceof Object[])) {
-			params = (Object[]) params[0];
-		}
-		switch(type) {
-			case TIMESTAMP:
-				return timestamp(params);
-			case DATE:
-				return date(params);
-			case TIME:
-				return time();
-			case SIGNEDINTEGER:
-				return signedinteger(params);
-			case UNSIGNEDINTEGER:
-				return unsignedinteger(params);
-			case SIGNEDDOUBLE:
-			case SIGNEDDECIMAL:
-				return signeddouble(params);
-			case UNSIGNEDDOUBLE:
-			case UNSIGNEDDECIMAL:
-				return unsigneddouble(params);
-			case TRUEORFALSE:
-				return trueOrFalse();
-			case BLOB:
-			case PARAGRAPH: 
-				if	((params.length == 1) && (params[0] instanceof Integer)) {
-					return paragraphs((int) params[0]);
-				}
-				else {
-					return paragraph();
-				}
-			case OTHER:
-			case SENTENCE: 
-				if	((params.length == 1) && (params[0] instanceof Integer)) {
-					return sentences((int) params[0]);
-				}
-				else {
-					return sentence();
-				}
-			case WORD: 
-			case TEXT:
-			default:
-				if	((params.length == 1) && (params[0] instanceof Integer)) {
-					return words((int) params[0]);
-				}
-				else {
-					return word();
-				}
-		}
-	}
-
-	/**
-	 * @see FillerTextType#UNSIGNEDINTEGER
-	 * @param params may be<ul>
-	 * 			<li>none - generate an unsigned (positive) integer in the range 0..100</li>
-	 * 			<li>(int)max - generate an unsigned (positive) integer in the range 0..max; same as {@link #unsignedinteger(int)}</li>
-	 * 			<li>(int)min,(int)max - generate an unsigned (positive) integer in the range min..max; same as {@link #unsignedinteger(int, int)}</li>
-	 * 			<li>(int)min,(int)max,(int)round - generate an unsigned (positive) integer in the range min..max rounding to round; same as {@link #unsignedinteger(int, int, int)}</li>
-	 * </ul>
-	 * @return the generated filler text object
-	 */
-	public int unsignedinteger(Object...params) {
-		if	((params.length == 1) && (params[0] instanceof Object[])) {
-			params = (Object[]) params[0];
-		}
-		int length = 0;
-		while ((params.length > length) && (params[length] instanceof Integer)) {
-			length++;
-		}
-		switch (length) {
-			case 0:
-				return unsignedinteger(100);
-			case 1:
-				return unsignedinteger((int)params[0]);
-			case 2:
-				return unsignedinteger((int)params[0], (int)params[1]);
-			case 3:
-			default:
-				return unsignedinteger((int)params[0], (int)params[1], (int)params[2]);
-		}
-	}
-
-	/**
-	 * @see FillerTextType#UNSIGNEDINTEGER
-	 * @param max - generate an unsigned (positive) integer in the range 0..max
-	 * @return the generated filler text object
-	 */
-	public int unsignedinteger(int max) {
-		return unsignedinteger(0, Math.max(0, max));
-	}
-
-	/**
-	 * generate an unsigned (positive) integer in the range min..max
-	 * @see FillerTextType#UNSIGNEDINTEGER
-	 * @param min
-	 * @param max
-	 * @return the generated filler text object
-	 */
-	public int unsignedinteger(int min, int max) {
-		return unsignedinteger(min, max, 1);
-	}
-
-	/**
-	 * generate an unsigned (positive) integer in the range min..max
-	 * @see FillerTextType#UNSIGNEDINTEGER
-	 * @param min
-	 * @param max
-	 * @param round
-	 * @return the generated filler text object
-	 */
-	public int unsignedinteger(int min, int max, int round) {
-		int result = fBaseProducer.randomBetween(Math.min(min, max), Math.max(min, max));
-		if	(round > 1) {
-			result = ((result + round/2) / round) * round;
-		}
-		return result;
-	}
-
-	/**
-	 * @see FillerTextType#SIGNEDINTEGER
-	 * @param params may be<ul>
-	 * 			<li>none - generate a signed (positive or negative) integer in the range -100..100</li>
-	 * 			<li>(int)max - generate a signed (positive or negative) integer in the range -max..max; same as {@link #signedinteger(int)}</li>
-	 * 			<li>(int)min,(int)max - generate a signed (positive or negative) integer in the range min..max; same as {@link #signedinteger(int, int)}</li>
-	 * 			<li>(int)min,(int)max,(int)round - generate an unsigned (positive) integer in the range min..max rounding to round; same as {@link #signedinteger(int, int, int)}</li>
-	 * </ul>
-	 * @return the generated filler text object
-	 */
-	public int signedinteger(Object...params) {
-		if	((params.length == 1) && (params[0] instanceof Object[])) {
-			params = (Object[]) params[0];
-		}
-		int length = 0;
-		while ((params.length > length) && (params[length] instanceof Integer)) {
-			length++;
-		}
-		switch (length) {
-			case 0:
-				return signedinteger(100);
-			case 1:
-				return signedinteger((int)params[0]);
-			case 2:
-				return signedinteger((int)params[0], (int)params[1]);
-			case 3:
-			default:
-				return signedinteger((int)params[0], (int)params[1], (int)params[2]);
-		}
-	}
-
-	/**
-	 * @see FillerTextType#SIGNEDINTEGER
-	 * @param max - generate a signed (positive or negative) integer in the range -max..max
-	 * @return the generated filler text object
-	 */
-	public int signedinteger(int range) {
-		return signedinteger(-Math.abs(range), Math.abs(range));
-	}
-
-	/**
-	 * generate a signed (positive or negative) integer in the range min..max
-	 * @see FillerTextType#SIGNEDINTEGER
-	 * @param min
-	 * @param max
-	 * @return the generated filler text object
-	 */
-	public int signedinteger(int min, int max) {
-		return signedinteger(min, max, 1);
-	}
-
-	/**
-	 * generate a signed (positive or negative) integer in the range min..max
-	 * @see FillerTextType#SIGNEDINTEGER
-	 * @param min
-	 * @param max
-	 * @param round, must be positive
-	 * @return the generated filler text object
-	 */
-	public int signedinteger(int min, int max, int round) {
-		int result = fBaseProducer.randomBetween(Math.min(min, max), Math.max(min, max));
-		if	(round > 1) {
-			result = ((result + round/2) / round) * round;
-		}
-		return result;
-	}
-
-	/**
-	 * @see FillerTextType#UNSIGNEDDOUBLE
-	 * @param params may be<ul>
-	 * 			<li>none - generate an unsigned (positive) double in the range 0.00..100.00 with two decimal digits</li>
-	 * 			<li>(int)decimals - generate an unsigned (positive) double in the range 0.00..100.00 with (decimal) decimal digits; same as {@link #unsigneddouble(int)}</li>
-	 * 			<li>(int)decimals,(double)max - generate an unsigned (positive) double in the range 0..max with (decimal) decimal digits; same as {@link #unsigneddouble(int,double)}</li>
-	 * 			<li>(int)decimals,(double)min,(double)max - generate an unsigned (positive) double in the range min..max with (decimal) decimal digits; same as {@link #unsigneddouble(int,double,double)}</li>
-	 * 			<li>(int)decimals,(double)min,(double)max,(double)round - generate an unsigned (positive) double in the range min..max with (decimal) decimal digits rounding; same as {@link #unsigneddouble(int,double,double,double)}</li>
-	 * </ul>
-	 * @return the generated filler text object
-	 */
-	public double unsigneddouble(Object...params) {
-		if	((params.length == 1) && (params[0] instanceof Object[])) {
-			params = (Object[]) params[0];
-		}
-		int length = 0;
-		int decimals = 2;
-		if	((params.length > 0) && (params[0] instanceof Integer)) {
-			decimals = (int)params[0];
-			while ((params.length > length+1) && (params[length+1] instanceof Double)) {
-				length++;
-			}
-		}
-		switch (length) {
-			case 0:
-				return unsigneddouble(decimals);
-			case 1:
-				return unsigneddouble(decimals, (double)params[1]);
-			case 2:
-				return unsigneddouble(decimals, (double)params[1], (double)params[2]);
-			case 3:
-			default:
-				return unsigneddouble(decimals, (double)params[1], (double)params[2], (double)params[3]);
-		}
-	}
-	
-	/**
-	 * @see FillerTextType#UNSIGNEDDOUBLE
-	 * @param decimals - generate an unsigned (positive) double in the range 0.00..100.00 with (decimal) decimal digits
-	 * @return the generated filler text object
-	 */
-	public double unsigneddouble(int decimals) {
-		return unsigneddouble(decimals, 100);
-	}
-	
-	/**
-	 * generate an unsigned (positive) double in the range 0..max with (decimal) decimal digits
-	 * @see FillerTextType#UNSIGNEDDOUBLE
-	 * @param decimals
-	 * @param max
-	 * @return the generated filler text object
-	 */
-	public double unsigneddouble(int decimals, double max) {
-		return unsigneddouble(decimals, 0, Math.max(0, max));
-	}
-
-	/**
-	 * generate an unsigned (positive) double in the range min..max with (decimal) decimal digits
-	 * @see FillerTextType#UNSIGNEDDOUBLE
-	 * @param decimals
-	 * @param min
-	 * @param max
-	 * @return the generated filler text object
-	 */
-	public double unsigneddouble(int decimals, double min, double max) {
-		return unsigneddouble(decimals, min, max, 0.0);
-	}
-
-	/**
-	 * generate an unsigned (positive) double in the range min..max with (decimal) decimal digits
-	 * @see FillerTextType#UNSIGNEDDOUBLE
-	 * @param decimals
-	 * @param min
-	 * @param max
-	 * @param round; must be > 0.0
-	 * @return the generated filler text object
-	 */
-	public double unsigneddouble(int decimals, double min, double max, double round) {
-		double factor = Math.pow(10.0, Math.max(0, decimals));
-		double result = fBaseProducer.randomBetween(Math.min(min, max), Math.max(min, max));
-		if	(round > 0.0) {
-			result = Math.round((result + round/2) / round) * round;
-		}
-		return Math.rint (result * factor) / factor;
-	}
-
-	/**
-	 * @see FillerTextType#SIGNEDDOUBLE
-	 * @param params may be<ul>
-	 * 			<li>none - generate a signed (positive or negative) double in the range 0.00..100.00 with two decimal digits</li>
-	 * 			<li>(int)decimals - generate a signed (positive or negative) double in the range 0.00..100.00 with (decimal) decimal digits; same as {@link #signeddouble(int)}</li>
-	 * 			<li>(int)decimals,(double)max - generate  signed (positive or negative) double in the range 0..max with (decimal) decimal digits; same as {@link #signeddouble(int,double)}</li>
-	 * 			<li>(int)decimals,(double)min,(double)max - generate a signed (positive or negative) double in the range min..max with (decimal) decimal digits; same as {@link #signeddouble(int,double,double)}</li>
-	 * 			<li>(int)decimals,(double)min,(double)max,(double)round - generate an signed (positive or negative) double in the range min..max with (decimal) decimal digits rounding; same as {@link #signeddouble(int,double,double,double)}</li>
-	 * </ul>
-	 * @return the generated filler text object
-	 */
-	public double signeddouble(Object...params) {
-		if	((params.length == 1) && (params[0] instanceof Object[])) {
-			params = (Object[]) params[0];
-		}
-		int length = 0;
-		int decimals = 2;
-		if	((params.length > 0) && (params[0] instanceof Integer)) {
-			decimals = (int)params[0];
-			while ((params.length > length+1) && (params[length+1] instanceof Double)) {
-				length++;
-			}
-		}
-		switch (length) {
-			case 0:
-				return signeddouble(decimals);
-			case 1:
-				return signeddouble(decimals, (double)params[1]);
-			case 2:
-				return signeddouble(decimals, (double)params[1], (double)params[2]);
-			case 3:
-			default:
-				return signeddouble(decimals, (double)params[1], (double)params[2], (double)params[3]);
-		}
-	}
-
-	/**
-	 * @see FillerTextType#SIGNEDDOUBLE
-	 * @param decimals - generate a signed (positive or negative) double in the range 0.00..100.00 with (decimal) decimal digits
-	 * @return the generated filler text object
-	 */
-	public double signeddouble(int decimals) {
-		return signeddouble(decimals, 100);
-	}
-
-	/**
-	 * generate  signed (positive or negative) double in the range 0..max with (decimal) decimal digits
-	 * @see FillerTextType#SIGNEDDOUBLE
-	 * @param decimals
-	 * @param max
-	 * @return the generated filler text object
-	 */
-	public double signeddouble(int decimals, double range) {
-		return signeddouble(decimals, -Math.abs(range), Math.abs(range));
-	}
-
-	/**
-	 * generate a signed (positive or negative) double in the range min..max with (decimal) decimal digits
-	 * @see FillerTextType#SIGNEDDOUBLE
-	 * @param decimals
-	 * @param max
-	 * @param min
-	 * @return the generated filler text object
-	 */
-	public double signeddouble(int decimals, double min, double max) {
-		return signeddouble(decimals, min, max, 0.0);
-	}
-
-	/**
-	 * generate a signed (positive or negative) double in the range min..max with (decimal) decimal digits
-	 * @see FillerTextType#SIGNEDDOUBLE
-	 * @param decimals
-	 * @param max
-	 * @param min
-	 * @param round; must be > 0.0
-	 * @return the generated filler text object
-	 */
-	public double signeddouble(int decimals, double min, double max, double round) {
-		double factor = Math.pow(10.0, Math.max(0, decimals));
-		double result = fBaseProducer.randomBetween(Math.min(min, max), Math.max(min, max));
-		if	(round > 0.0) {
-			result = Math.round((result + round/2) / round) * round;
-		}
-		return Math.rint (result * factor) / factor;
-	}
-	
-	/**
-	 *  @see FillerTextType#TRUEORFALSE
-	 *  @return the generated filler text object
-	 */
-	public Boolean trueOrFalse() {
-		return fBaseProducer.trueOrFalse();
-	}
-
-	/**
-	 * @see FillerTextType#TIMESTAMP
-	 * @param params may be<ul>
-	 * 			<li>none - same as {@link #timestamp(int)} with parameter 0</li>
-	 * 			<li>(int)yearsToPastOrInFuture - generate a timestamp with a range of years from now; same as {@link #timestamp(int)}</li>
-	 * 			<li>(int)from,(int)to - generate a timestamp between two years including both years; same as {@link #timestamp(int, int)}</li>
-	 * </ul>
-	 *  @return the generated filler text object
-	 */
-	public DateTime timestamp(Object...params) {
-		if	((params.length == 1) && (params[0] instanceof Object[])) {
-			params = (Object[]) params[0];
-		}
-		int length = 0;
-		while ((params.length > length) && (params[length] instanceof Integer)) {
-			length++;
-		}
-		switch (length) {
-			case 0:
-				return timestamp(0);
-			case 1:
-				return timestamp((int) params[0]);
-			case 2:
-				default:
-				return timestamp((int) params[0], (int) params[1]);
-		}
-	}
-	
-	/**
-	 *  generate a timestamp between two years including both years
-	 *  @see FillerTextType#TIMESTAMP
-	 *  @param from may be<ul>
-	 *  <li>either a year after 1900</li>
-	 *  <li>otherwise it will be interpreted as an offset to the actual year</li>
-	 *  </ul>
-	 *  @param to may be<ul>
-	 *  <li>either a year after 1900</li>
-	 *  <li>otherwise it will be interpreted as an offset to the actual year</li>
-	 *  </ul>
-	 *  @return the generated filler text object
-	 */
-	public DateTime timestamp(int from, int to) {
-		if	(from < 1900) {
-			from += DateTime.now().getYear();
-		}
-		if	(to < 1900) {
-			to += DateTime.now().getYear();
-		}
-		return fDateProducer.randomDateBetweenYears(Math.min(from,  to), Math.max(from, to));
-	}
-
-	/**
-	 *  generate a timestamp with a range of years from now
-	 *  @see FillerTextType#TIMESTAMP
-	 *  @param yearsToPastOrInFuture may be<ul>
-	 *  <li>0, then a timestamp inside the actual year will be generated
-	 *  <li>negative, then a timestamp in the yearsToPastOrInFuture years before now = past will be generated 
-	 *  <li>postive, then a timestamp in the yearsToPastOrInFuture years before now = will be generated 
-	 *  </ul>
-	 *  @return the generated filler text object
-	 */
-	public DateTime timestamp(int yearsToPastOrInFuture) {
-		if	(yearsToPastOrInFuture == 0) {
-			return timestamp(0, 0);
-		}
-		else if	(yearsToPastOrInFuture < 0) {
-			return fDateProducer.randomDateInThePast(-yearsToPastOrInFuture);
-		}
-		else {
-			return fDateProducer.randomDateInTheFuture(yearsToPastOrInFuture);
-		}
-	}
-
-	/**
-	 * @see FillerTextType#DATE
-	 * @param params may be<ul>
-	 * 			<li>none - same as {@link #date(int)} with parameter 0</li>
-	 * 			<li>(int)yearsToPastOrInFuture - generate a date with a range of years from now; same as {@link #date(int)}</li>
-	 * 			<li>(int)from,(int)to - generate a date between two years including both years; same as {@link #date(int, int)}</li>
-	 * </ul>
-	 *  @return the generated filler text object
-	 */
-	@SuppressWarnings("deprecation")
-	public Date date(Object...params) {
-		DateTime dt = timestamp(params);
-		return (new Date(dt.getYear()-1900, dt.getMonthOfYear()-1, dt.getDayOfMonth()));		
-	}
-
-	/**
-	 *  generate a date (without time) between two years including both years
-	 *  @see FillerTextType#DATE
-	 *  @param from may be<ul>
-	 *  <li>either a year after 1900</li>
-	 *  <li>otherwise it will be interpreted as an offset to the actual year</li>
-	 *  </ul>
-	 *  @param to may be<ul>
-	 *  <li>either a year after 1900</li>
-	 *  <li>otherwise it will be interpreted as an offset to the actual year</li>
-	 *  </ul>
-	 *  @return the generated filler text object
-	 */
-	@SuppressWarnings("deprecation")
-	public Date date(int from, int to) {
-		DateTime dt = timestamp(from, to);
-		return (new Date(dt.getYear()-1900, dt.getMonthOfYear()-1, dt.getDayOfMonth()));		
-	}
-
-	/**
-	 *  generate a date (without time) with a range of years from now
-	 *  @see FillerTextType#DATE
-	 *  @param yearsToPastOrInFuture may be<ul>
-	 *  <li>0, then a date inside the actual year will be generated
-	 *  <li>negative, then a date in the yearsToPastOrInFuture years before now = past will be generated 
-	 *  <li>postive, then a date in the yearsToPastOrInFuture years before now = will be generated 
-	 *  </ul>
-	 *  @return the generated filler text object
-	 */
-	@SuppressWarnings("deprecation")
-	public Date date(int yearsToPastOrInFuture) {
-		DateTime dt = timestamp(yearsToPastOrInFuture);
-		return (new Date(dt.getYear()-1900, dt.getMonthOfYear()-1, dt.getDayOfMonth()));		
-	}
-	
-	/**
-	 *  generate a time (without date)
-	 *  @see FillerTextType#TIME
-	 *  @return the generated filler text object
-	 */
-	@SuppressWarnings("deprecation")
-	public Time time() {
-		DateTime dt = fDateProducer.randomDateInThePast(1);
-		return (new Time(dt.getHourOfDay(), dt.getMinuteOfHour(), dt.getSecondOfMinute()));		
-	}
-	
-	/**
-	 *  @see FillerTextType#PARAGRAPH 
-	 *  @return the generated filler text object, containing one paragraph
-	 */
-	public String paragraph() {
-		return fTextProducer.paragraph(1);
-	}
-	
-	/**
-	 *  @see FillerTextType#PARAGRAPH 
-	 *  @param count 0 uses the internal default count value
-	 *  @return the generated filler text object, containing count paragraph(s)
-	 */
-	public String paragraphs(int count) {
-		if	(count > 0) {
-			return fTextProducer.paragraph(count);
-		}
-		else {
-			return paragraph();
-		}
-	}
-	
-	/**
-	 *  @see FillerTextType#SENTENCE 
-	 *  @return the generated filler text object, containing one sentence
-	 */
-	public String sentence() {
-		return fTextProducer.sentence(1);
-	}
-	
-	/**
-	 *  @see FillerTextType#SENTENCE 
-	 *  @param count 0 uses the internal default count value
-	 *  @return the generated filler text object, containing count sentence(s)
-	 */
-	public String sentences(int count) {
-		if	(count > 0) {
-			return fTextProducer.sentence(count);
-		}
-		else {
-			return sentence();
-		}
-	}
-	
-	/**
-	 *  @see FillerTextType#WORD 
-	 *  @return the generated filler text object, containing one word
-	 */
-	public String word() {
-		return fTextProducer.word(1);
-	}
-	
-	/**
-	 *  @see FillerTextType#WORD 
-	 *  @param count 0 uses the internal default count value
-	 *  @return the generated filler text object, containing count word(s)
-	 */
-	public String words(int count) {
-		if	(count > 0) {
-			return fTextProducer.word(count);
-		}
-		else {
-			return word();
-		}
-	}
-
-	public String numerify(String numberString) {
-		return fBaseProducer.numerify(numberString);
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/FillerTextType.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/FillerTextType.java
deleted file mode 100644
index 775d190..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/FillerTextType.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common.filler;
-
-import java.sql.Time;
-import java.sql.Types;
-import java.sql.Date;
-
-import org.joda.time.DateTime;
-
-public enum FillerTextType {
-	/** simple text */
-	TEXT(Types.CHAR, String.class),
-	/** timestamp or date & time */
-	TIMESTAMP(Types.TIMESTAMP, DateTime.class),
-	/** signed (positive) integer */
-	SIGNEDINTEGER(Types.INTEGER, Integer.class),
-	/** unsigned (positive or negative) integer */
-	UNSIGNEDINTEGER(Types.INTEGER, Integer.class),
-	/** date without time */
-	DATE(Types.DATE, Date.class),
-	/** time without date */
-	TIME(Types.TIME, Time.class),
-	/** boolean */
-	TRUEORFALSE(Types.BOOLEAN, Boolean.class),
-	/** signed (positive) double */
-	SIGNEDDOUBLE(Types.DOUBLE, Double.class),
-	/** unsigned (positive or negative) double */
-	UNSIGNEDDOUBLE(Types.DOUBLE, Double.class),
-//	JAVA_OBJECT(Types.JAVA_OBJECT),
-//	BINARY(Types.BINARY),
-	/** any other tex */
-	OTHER(Types.OTHER, TEXT),
-	/** any other text */
-	BLOB(Types.BLOB, TEXT),
-	/** signed (positive) double */
-	SIGNEDDECIMAL(Types.DECIMAL, SIGNEDDOUBLE),
-	/** unsigned (positive or negative) double */
-	UNSIGNEDDECIMAL(Types.DECIMAL, UNSIGNEDDOUBLE),
-	//
-	/** word(s) */
-	WORD(TEXT),
-	/** sentence(s) */
-	SENTENCE(TEXT),
-	/** paragraph(s) */
-	PARAGRAPH(TEXT),
-//	/** localized first name */
-//	FIRSTNAME(TEXT),
-//	/** localized last name */
-//	LASTNAME(TEXT),
-//	/** localized full name = first & last name */
-//	FULLNAME(TEXT),
-//	/** localized email containing first & last name */
-//	EMAIL(TEXT),
-//	/** localized postal code */
-//	POSTALCODE(TEXT),
-//	/** localized city */
-//	CITY(TEXT),
-//	/** localized phone number */
-//	PHONE(TEXT),
-//	/** localized phone number */
-//	GENDER_MALE(Types.BOOLEAN, Boolean.class),
-	;
-
-	private final int fSqlType;
-	private final FillerTextType fParentType;
-	private final Class<?> fObjectClass;
-	 
-	private FillerTextType(int sqlType, Class<?> objectClass) {
-		this(sqlType, objectClass, null);
-	}
-	 
-	private FillerTextType(FillerTextType parentType) {
-		this(0, null, parentType);
-	}
-	 
-	private FillerTextType(int sqlType, FillerTextType parentType) {
-		this(sqlType, null, parentType);
-	}
-	 
-	private FillerTextType(int sqlType, Class<?> objectClass, FillerTextType parentType) {
-		fSqlType = sqlType;
-		fObjectClass = objectClass;
-		fParentType = parentType;
-	}
-
-	/**
-	 * @param object to be checked, if it is compatible to the corresponding class
-	 * @return true/false
-	 */
-	public boolean instanceOf(Object object) {
-		if	(fParentType == null) {
-			return fObjectClass.isInstance(object);
-		}
-		else {
-			return fParentType.instanceOf(object);
-		}
-	}
-	
-	/**
-	 * @return the corresponding {@link java.sql.Types}
-	 */
-	public int getSqlType() {
-		if	(fParentType == null) {
-			return fSqlType;
-		}
-		else {
-			return fParentType.getSqlType();
-		}
-	}
-
-	/**
-	 * @return the returning class
-	 */
-	public Class<?> getObjectClass() {
-		if	(fParentType == null) {
-			return fObjectClass;
-		}
-		else {
-			return fParentType.getObjectClass();
-		}
-	}
-
-	/**
-	 * @param name <u>case insensitive</u> name to searched for
-	 * @return the corresponding {@link FillerTextType}
-	 */
-	public static FillerTextType typeFor(String name) {
-		for	(FillerTextType type : values()) {
-			if	(name.equalsIgnoreCase(type.toString())) {
-				return type;
-			}
-		}
-		return OTHER.fParentType;
-	}
-	
-	/**
-	 * @param sqlType the {@link java.sql.Types} to be searched for
-	 * @return the <u>first</u> corresponding {@link FillerTextType}
-	 */
-	public static FillerTextType typeFor(int sqlType) {
-		for	(FillerTextType type : values()) {
-			if	(type.fSqlType == sqlType) {
-				while (type.fParentType != null) {
-					type = type.fParentType;
-				}
-				return type;
-			}
-		}
-		return OTHER.fParentType;
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/TextConfigurator.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/TextConfigurator.java
deleted file mode 100644
index b1edc07..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/TextConfigurator.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common.filler;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-public class TextConfigurator {
-
-	private Locale locale;
-	private String alphabet = "abcdefghijklmnopqrstuvwxyz";
-	private String loremipsum = "";
-	private String text = "";
-	private Set<String> words = null;
-	private Set<String> sentences = null;
-	private Set<String> paragraphs = null;
-
-	private static final Locale DEFAULT = Locale.ENGLISH;
-	private static final Map<Locale,String> ALPHABETS = new HashMap<Locale, String> ();
-	private static final Map<Locale,String> LOREM_IPSUMS = new HashMap<Locale, String> ();
-	
-	static {
-		ALPHABETS.put(Locale.ENGLISH, "abcdefghijklmnopqrstuvwxyz");
-		ALPHABETS.put(Locale.GERMAN,  "abcdefghijklmnopqrstuvwxyzäöüß");
-		ALPHABETS.put(Locale.FRENCH,  "abcdefghijklmnopqrstuvwxyzáàâéè");
-		
-		LOREM_IPSUMS.put(Locale.ENGLISH,
-			"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean suscipit ullamcorper ipsum, at varius leo sagittis ut. Morbi varius nisl non eleifend imperdiet. Integer porttitor arcu sit amet elit rhoncus, eget bibendum felis mattis. Aenean nec accumsan metus. Fusce venenatis ipsum nec accumsan varius. Suspendisse vitae nisi cursus, pretium nulla id, tincidunt urna. Aenean porttitor lacus nec sapien commodo laoreet. Praesent tristique sagittis felis ut porta. Nam non diam urna. Nullam nec lorem iaculis, elementum elit ut, malesuada urna. Donec ac erat interdum, porta mi a, porttitor risus.\r\n"+
-			"Phasellus vulputate molestie mattis. Donec lobortis nisl sit amet nunc venenatis fermentum. Nam accumsan dignissim cursus. Nullam ornare tristique dui tempor tincidunt. Aenean a dignissim erat. Fusce lacinia mauris sit amet ante convallis sodales. Sed eleifend posuere dui. Curabitur venenatis aliquam ex, vitae rhoncus quam scelerisque id. Quisque egestas diam urna, eget fringilla tortor tristique ac. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.\r\n"+
-			"Maecenas volutpat ipsum vel pellentesque eleifend. Aenean felis lectus, consectetur vel lacinia nec, scelerisque a ex. Etiam placerat finibus odio, a mollis lorem congue in. Nullam laoreet nec odio eu venenatis. Sed convallis velit pulvinar, vestibulum neque sit amet, ultricies arcu. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sit amet ex sit amet massa semper bibendum in id est.\r\n"+
-			"In nulla velit, laoreet vitae bibendum eget, pulvinar sit amet arcu. Nunc fermentum metus at dui condimentum, id sodales elit vehicula. Vivamus consequat finibus felis, sed accumsan urna faucibus sit amet. Suspendisse at sagittis diam. Donec fermentum risus sed dignissim auctor. Phasellus vel est diam. Donec venenatis neque eget ex tempus ornare. Duis tellus magna, pharetra sit amet dui eu, interdum mollis ante. Maecenas malesuada pulvinar metus, quis posuere dui egestas in. Fusce quis lacus facilisis, feugiat eros a, accumsan ante. In et quam pharetra, varius mauris nec, commodo urna.\r\n"+
-			"Nullam vel fermentum lectus. Sed vel mauris at sapien dictum sodales. Fusce a tristique tellus. Sed vel pulvinar odio. Nunc ut libero at nunc molestie consequat. Vivamus facilisis varius quam non vestibulum. Nullam volutpat interdum ipsum eu lacinia. Ut a ullamcorper neque. Morbi vulputate felis viverra lacinia blandit. In gravida, enim eu eleifend fermentum, lacus augue rutrum velit, vitae lacinia metus augue a neque.\r\n"+
-			"Nulla in nulla dolor. Donec ac velit mollis nunc scelerisque pharetra. Phasellus id nisl et arcu eleifend commodo eget nec elit. Vestibulum at diam quam. Quisque vestibulum in erat vitae lacinia. Phasellus et iaculis dui. Quisque justo risus, feugiat et facilisis ut, sagittis ut sem.\r\n"+
-			"Cras pretium nisl orci, vel blandit erat vestibulum in. Vestibulum vitae arcu consequat sem viverra consectetur eu a velit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus et ullamcorper felis, id luctus dolor. Vestibulum eu nulla et mi fermentum ultricies et in neque. Nam sollicitudin leo neque, vel efficitur massa dictum vitae. Praesent eget posuere est.\r\n"+
-			"Integer eros leo, tincidunt a facilisis ut, imperdiet efficitur erat. Vivamus at nibh nulla. Etiam nisl orci, convallis quis metus sed, tincidunt aliquet nisl. Morbi posuere vehicula neque, lacinia pulvinar metus egestas nec. Nulla sodales mauris eget tellus sagittis porttitor. Aenean sed nunc id odio pharetra mattis quis ut purus. Sed sem velit, tempus vitae luctus eget, ullamcorper at odio. Etiam elit ipsum, iaculis non cursus at, elementum a augue. Ut sollicitudin fermentum lorem, in vestibulum ligula sodales sodales. Mauris sed sem pellentesque, bibendum lacus in, egestas justo. Etiam sit amet dui purus. Praesent et gravida purus. Aenean auctor tempus viverra. Quisque in sem id arcu consectetur eleifend. Cras at lorem in libero consectetur mollis id posuere justo. Sed finibus mauris nec metus fringilla luctus.\r\n"+
-			"Nulla sagittis tortor id cursus auctor. Vivamus sagittis convallis metus, sed semper elit ultrices eu. Praesent sodales ante vitae nibh suscipit, nec accumsan felis euismod. Nulla at orci venenatis, semper magna vitae, rhoncus libero. Nunc ut consequat quam. Aenean dictum nibh eu lorem accumsan commodo. Praesent egestas aliquam velit, nec varius arcu sodales quis. Sed lobortis tellus nunc, eget suscipit dolor consequat a. Quisque laoreet consequat nisl, at rhoncus sem cursus feugiat. Suspendisse id ipsum at tellus rutrum facilisis. Nullam nec massa nec urna tincidunt ornare. In magna est, sagittis fringilla tempus eget, tempus sed eros. Proin elementum porta gravida.\r\n"+
-			"Donec non lorem quis orci egestas semper a sed arcu. Donec vestibulum maximus mollis. Vestibulum vel lorem vel justo semper euismod. Nam pellentesque odio a odio varius molestie. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris dapibus nibh et ornare pulvinar. Curabitur eget aliquet risus. Etiam sed pretium nulla. Duis sapien ipsum, lobortis non eros in, tristique hendrerit turpis.\r\n"+
-			"Cras pharetra ac diam id viverra. Vivamus sit amet ex eleifend, volutpat ligula et, ullamcorper elit. Ut dignissim mollis elit, non eleifend felis pharetra quis. Proin pretium, est eu pharetra semper, ipsum ex volutpat felis, ut iaculis elit tortor eget est. Curabitur ut ullamcorper orci, in finibus massa. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed sed lacinia massa, sed dapibus velit. Donec eget bibendum purus. Sed suscipit ultricies accumsan. Aenean pellentesque facilisis felis, in lacinia mauris faucibus ac. Nunc mauris diam, posuere sed ullamcorper vitae, pharetra vel nisi. Nunc vehicula urna massa, vitae ultrices ex luctus sed.\r\n"+
-			"Etiam pellentesque posuere leo, ac pellentesque justo. Pellentesque laoreet ipsum id nunc volutpat, ut consequat felis vestibulum. Nullam iaculis augue est, eu mattis ante condimentum non. Pellentesque quis tristique libero. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed a ipsum a odio pharetra egestas nec sit amet sem. Integer quis aliquam lectus.\r\n"+
-			"Quisque at justo auctor, venenatis lacus sit amet, finibus tellus. Vivamus rhoncus lacinia lorem quis malesuada. Phasellus scelerisque vehicula ex. Fusce finibus purus placerat, rhoncus erat blandit, tincidunt dolor. Nam a justo iaculis enim auctor imperdiet vel sed libero. Nulla sit amet orci sollicitudin, facilisis mauris sit amet, dignissim turpis. Donec ut enim quis justo dictum consequat.\r\n"+
-			"Sed eget augue consequat, pulvinar dui eget, suscipit arcu. Pellentesque et lacinia nisi, eu iaculis odio. Aenean fermentum quam a nibh hendrerit, accumsan hendrerit dui egestas. Ut sit amet nulla vitae risus pulvinar vestibulum non id lorem. Integer pretium condimentum interdum. Maecenas tincidunt vel ipsum vel accumsan. Sed finibus mi vel sem rhoncus consectetur. Donec malesuada, arcu id malesuada pulvinar, ex ante vehicula dolor, at pharetra massa leo ut felis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nunc efficitur ex ac tincidunt dignissim. Donec in nisi quis nulla scelerisque ullamcorper quis nec mi. Curabitur convallis eu enim vel mollis. Duis rhoncus, est id sagittis feugiat, tortor purus elementum nunc, in iaculis est erat fermentum orci. Proin cursus, lacus euismod finibus vulputate, ante dolor commodo dui, a dictum lacus justo vitae velit. Proin sit amet ex gravida, sodales justo non, ullamcorper ipsum. Nullam porta vehicula efficitur.\r\n"+
-			"Mauris euismod finibus accumsan. Nulla ornare sagittis dignissim. Vestibulum eget aliquam augue. Aliquam malesuada eu dolor nec placerat. Nullam gravida eu eros non maximus. Aliquam vulputate libero eu maximus elementum. Fusce ex purus, pretium quis eros ut, consequat maximus ipsum. Aenean id ullamcorper turpis. Etiam efficitur et quam elementum viverra. Aenean lacinia, nisi eu faucibus efficitur, magna ligula dictum nulla, vel porta orci nibh id nisi. Morbi sit amet tempor magna. Praesent vitae orci eu est eleifend finibus. Aliquam vel nisi vel justo fermentum rutrum sit amet in mauris. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.\r\n"+
-			"Proin ante urna, congue non orci a, vehicula tincidunt velit. In accumsan justo sed eros laoreet volutpat. Phasellus venenatis cursus nulla sed consectetur. Maecenas at dolor mauris. Nulla eget iaculis neque, in malesuada nisl. Etiam posuere enim vitae erat condimentum tristique. Nulla vitae tempus ante. Aenean iaculis nisl id accumsan dignissim. Proin iaculis quam eget augue commodo, in egestas ex semper. Praesent ut mauris tortor. Donec vestibulum ante id vulputate luctus. Ut eu accumsan metus. Integer in ligula nulla.\r\n"+
-			"Nulla facilisi. Proin molestie erat eget dui volutpat tristique. Nullam accumsan dui sodales nunc consectetur semper. Duis posuere lacus id elit interdum, eu pellentesque dui blandit. Vestibulum eget rutrum urna. In lacus eros, mollis nec scelerisque ac, eleifend nec sapien. Ut varius pretium felis, eu rutrum libero feugiat in. Sed feugiat tristique nisi nec imperdiet. Vivamus quis pulvinar mauris, a tempor arcu. Maecenas auctor, tellus eget imperdiet suscipit, lacus velit eleifend nisi, ac tempus ipsum elit id tellus. Duis justo felis, placerat a finibus in, sodales sit amet ipsum. Nunc vel mauris eget sem tristique accumsan. Suspendisse libero enim, tincidunt nec imperdiet ut, finibus eget magna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce eleifend id dolor at fermentum.\r\n"+
-			"Fusce lectus tortor, tincidunt id commodo et, mattis eu ipsum. Integer id magna nec dui rhoncus suscipit vel quis libero. Phasellus venenatis, libero ac congue facilisis, tellus ligula semper ligula, ac semper diam dolor sit amet diam. Curabitur ante nulla, placerat quis felis at, pretium condimentum ante. In ac felis quis orci consectetur condimentum. In eu odio venenatis, finibus urna et, tincidunt leo. Cras at urna id sapien pretium maximus. Proin quam nulla, porta vestibulum neque et, viverra mollis neque. Nam et viverra mauris. Proin sit amet placerat est, in blandit metus. Donec nec dui vel tortor commodo interdum sit amet at urna. Nunc ligula ex, molestie nec eleifend at, dapibus at ex. Interdum et malesuada fames ac ante ipsum primis in faucibus.\r\n"+
-			"Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc rutrum leo dolor, eu auctor enim sagittis ac. Ut facilisis cursus ornare. Donec nec leo blandit, pellentesque elit a, suscipit sapien. Maecenas et risus scelerisque, rutrum ligula vel, pellentesque elit. Cras nec lobortis metus, id vehicula enim. Aliquam viverra ligula ligula, ut luctus nunc suscipit vitae. Pellentesque vel dictum leo. Aenean leo quam, convallis a varius nec, laoreet eget augue.\r\n"+
-			"Phasellus viverra ante eu sem blandit, vel sagittis urna eleifend. Nunc facilisis tincidunt mauris vel gravida. Sed nec ipsum vel neque tempor bibendum sit amet sed mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In erat eros, porta sit amet varius sed, mattis ac risus. Donec maximus felis sed dictum faucibus. Ut tristique lacus eget felis venenatis ultrices. Nam luctus tortor quis est molestie, ac blandit sem dictum. Ut fermentum, diam ac pharetra imperdiet, dui enim eleifend orci, quis posuere ligula turpis vitae lorem. In vitae semper orci. Proin faucibus ligula vel arcu imperdiet laoreet. In purus felis, consectetur vel accumsan nec, vestibulum in sapien. Curabitur commodo nisi eu arcu scelerisque, eu laoreet orci tristique. Nullam in tellus dolor. Curabitur tempor quam a arcu posuere tincidunt. Integer id metus et lacus vestibulum pulvinar."
-		);
-		/*
-		LOREM_IPSUMS.put(Locale.GERMAN,
-			"Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans.\r\n"+
-			"Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen.\r\n"+
-			"Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik.\r\n"+
-			"Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg.\r\n"+
-			"Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse.\r\n"+
-			"Wehmütig lief ihm eine rhetorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy.\r\n"+
-			"Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort und und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren.\r\n"+
-			"Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten.\r\n"+
-			"Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch. Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans.\r\n"+
-			"Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen.\r\n"+
-			"Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik.\r\n"+
-			"Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg.\r\n"+
-			"Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse.\r\n"+
-			"Wehmütig lief ihm eine rhetorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy.\r\n"+
-			"Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort und und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren.\r\n"+
-			"Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten. Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch.\r\n"+
-			"Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien.\r\n"+
-			"Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik.\r\n"+
-			"Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg.\r\n"+
-			"Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rhetorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort und und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren. Doch alles Gutzureden."
-		);
-		*/
-	}
-	
-	protected TextConfigurator(Locale locale) {
-		this.locale = locale;
-		Locale locale2 = new Locale(locale.getLanguage());
-		if	(ALPHABETS.containsKey(locale)) {
-			alphabet = ALPHABETS.get(locale);
-		}
-		else if	(ALPHABETS.containsKey(locale2)) {
-			alphabet = ALPHABETS.get(locale2);
-		}
-		else {
-			alphabet = ALPHABETS.get(DEFAULT);
-		}
-		if	(LOREM_IPSUMS.containsKey(locale)) {
-			loremipsum = LOREM_IPSUMS.get(locale);
-		}
-		else if	(LOREM_IPSUMS.containsKey(locale2)) {
-			loremipsum = LOREM_IPSUMS.get(locale2);
-		}
-		else {
-			loremipsum = LOREM_IPSUMS.get(DEFAULT);
-		}
-	}
-	
-	protected String getAlphabet() {
-		return alphabet;
-	}
-	
-	protected String getLoremIpsum() {
-		return loremipsum;
-	}
-
-	protected Set<String> getParagraphs() {
-		if	(paragraphs == null) {
-			paragraphs = new HashSet<String>();
-			String[] items = loremipsum.split("\r\n");
-			for (String item : items) {
-				paragraphs.add(item);
-			}
-		}
-		return paragraphs;
-	}
-	
-	protected Set<String> getSentences() {
-		if	(sentences == null) {
-			sentences = new HashSet<String>();
-			String[] items = loremipsum.split("[\\.,!;?:]+");
-			for (String item : items) {
-				sentences.add(item.trim());
-			}
-		}
-		return sentences;
-	}
-	
-	protected Set<String> getWords() {
-		if	(words == null) {
-			words = new HashSet<String>();
-			String[] items;
-			if	(text.isEmpty()) {
-				items = loremipsum.split(" \\s");
-			}
-			else {
-				items = text.split(" \\s");
-			}
-			for (String item : items) {
-				words.add(item
-					.replace(".", "")
-					.replace(",", "")
-					.replace(";", "")
-					.replace("!", "")
-					.replace("?", "")
-				);
-			}
-		}
-		return words;
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/TextProvider.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/TextProvider.java
deleted file mode 100644
index 25bccb7..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/TextProvider.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common.filler;
-
-import java.util.Locale;
-import java.util.Set;
-
-
-public class TextProvider {
-
-	private final TextConfigurator fConfigurator;
-	private final BaseProvider fBaseProvider;
-	
-	public TextProvider(BaseProvider baseProvider, Locale locale) {
-		fBaseProvider = baseProvider;
-		fConfigurator = new TextConfigurator(locale);
-	}
-
-	public String paragraph(int count) {
-		return combine(fConfigurator.getParagraphs(), "\r\n", count);
-	}
-
-	public String sentence(int count) {
-		return combine(fConfigurator.getSentences(), ".", count);
-	}
-
-	public String word(int count) {
-		return combine(fConfigurator.getWords(), " ", count);
-	}
-	
-	private String combine(Set<String> options, String glue, int count) {
-		String[] items = options.toArray(new String[0]);
-		String result = null;
-		for	(int i = 0; i < count; i++) {
-			if	(result == null) {
-				result = "";
-			}
-			else {
-				result += glue;
-			}
-			result += items[fBaseProvider.randomBetween(0, items.length-1)];
-		}
-		return result;
-	}
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/test/FillerTextExample.java b/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/test/FillerTextExample.java
deleted file mode 100644
index 708b375..0000000
--- a/org.eclipse.osbp.xtext.entitymock.common/src/org/eclipse/osbp/xtext/entitymock/common/filler/test/FillerTextExample.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
- * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
-package org.eclipse.osbp.xtext.entitymock.common.filler.test;
-
-import java.util.Locale;
-
-import org.eclipse.osbp.xtext.entitymock.common.filler.FillerTextProvider;
-import org.eclipse.osbp.xtext.entitymock.common.filler.FillerTextType;
-
-/**
- *  Example generating some filler text ("Blindtext").<br>
- *  It's not possible to unit test it, because everytime new values will be generated! 
- */
-public class FillerTextExample {
-	
-	private static void result(String variable, Object...values) {
-		System.out.format("%-50s >", variable);
-		for	(Object value : values) {
-			System.out.print(" = "+value.toString());
-		}
-		System.out.println();
-	}
-	
-	public static void main(String[] args) {
-		
-		Locale [] locales = new Locale[] {
-			Locale.GERMAN,
-			Locale.ENGLISH,
-			Locale.forLanguageTag("pl")
-		};
-
-		// --- sample using the api in different ways ---
-		System.out.println("=== api examples ===");
-		{
-			FillerTextProvider provider = FillerTextProvider.get(Locale.GERMAN);
-			
-			// --- it's possible to use either the generic {@link FillerTextProvider#generate()} or the specific methods ---
-			System.out.println("--- some date and time filler texts ---");
-			result("Date 'past 10 years' via enum",					provider.generate(FillerTextType.DATE, -10));
-			result("Date 'past 10 years' via string",				provider.generate("date", -10));
-			result("Date 'past 10 years' via string",				provider.generate("DATE", -10));
-			result("Date 'past 10 years' via API",					provider.date(-10));
-			
-			result("Date 'future 5 years'",							provider.generate("Date", 5));
-			
-			result("Date 'between 1980 and 1990'",					provider.date(1980, 1990));
-			result("Date 'between past 10 and future 20 years'",	provider.date(-10, 20));
-			
-			result("Time",											provider.time());
-
-			result("Timestamp within this year",					provider.timestamp());
-
-			System.out.println("--- some integer and double filler texts ---");
-			result("Unsigned Integer - default", 			(Integer)provider.unsignedinteger());
-			result("Unsigned Integer - maximum 365", 		(Integer)provider.unsignedinteger(365), (Integer)provider.generate("unsignedinteger", 365), (Integer)provider.generate(FillerTextType.UNSIGNEDINTEGER, 365));
-			result("Unsigned Integer - between 18 and 65", 	(Integer)provider.unsignedinteger(18, 65));
-			
-			result("Signed Integer - default", 				(Integer)provider.signedinteger());
-			result("Signed Integer - range -365 to 365",	(Integer)provider.signedinteger(365), (Integer)provider.generate("signedinteger", 365), (Integer)provider.generate(FillerTextType.SIGNEDINTEGER, 365));
-			result("Signed Integer - between -18 and 65", 	(Integer)provider.signedinteger(-18, 65), (Integer)provider.generate("signedinteger", -18, 65), (Integer)provider.generate(FillerTextType.SIGNEDINTEGER, -18, 65));
-			
-			result("Unsigned Double - default", 						(Double)provider.unsigneddouble());
-			result("Unsigned Double - 3 decimals",	 					(Double)provider.unsigneddouble(3));
-			result("Unsigned Double - 1 decimal, max 10",				(Double)provider.unsigneddouble(1, 10.0), (Double)provider.generate("unsigneddouble", 1, 10.0), (Double)provider.generate(FillerTextType.UNSIGNEDDOUBLE, 1, 10.0));
-			result("Unsigned Double - 1 decimal, between 10 and 20", 	(Double)provider.unsigneddouble(1, 10.0, 20.0), (Double)provider.generate("unsigneddouble", 1, 10.0, 20.0), (Double)provider.generate(FillerTextType.UNSIGNEDDOUBLE, 1, 10.0, 20.0));
-			
-			result("Unsigned Double - default", 						(Double)provider.signeddouble());
-			result("Unsigned Double - 3 decimals",	 					(Double)provider.signeddouble(3));
-			result("Unsigned Double - 1 decimal, range -10 to 10",		(Double)provider.signeddouble(1, 10.0), (Double)provider.generate("signeddouble", 1, 10.0), (Double)provider.generate(FillerTextType.SIGNEDDOUBLE, 1, 10.0));
-			result("Unsigned Double - 1 decimal, between -10 and 20", 	(Double)provider.signeddouble(1, -10.0, 20.0), (Double)provider.generate("signeddouble", 1, -10.0, 20.0), (Double)provider.generate(FillerTextType.SIGNEDDOUBLE, 1, -10.0, 20.0));
-
-			System.out.println("--- some text filler texts ---");
-			result("one word", 		provider.word());
-			result("5 words", 		provider.words(5));
-			result("one sentence", 	provider.sentence());
-			result("5 sentences", 	provider.sentences(5));
-			result("one paragraph", provider.paragraph());
-			result("5 paragraphs", 	provider.paragraphs(5));
-			
-//			System.out.println("--- a example person filler text ---");
-//			result("First name",	provider.firstName(), provider.generate("firstname"), provider.generate(FillerTextType.FIRSTNAME));
-//			result("Last name",		provider.lastName(), provider.generate("lastName"), provider.generate(FillerTextType.LASTNAME));
-//			result("Full name",		provider.fullName(), provider.generate("fullName"), provider.generate(FillerTextType.FULLNAME));
-//			result("Email",			provider.email(), provider.generate("email"), provider.generate(FillerTextType.EMAIL));
-//			result("City",			provider.city(), provider.generate("city"), provider.generate(FillerTextType.CITY));
-//			result("Postal code",	provider.postalCode(), provider.generate("postalCode"), provider.generate(FillerTextType.POSTALCODE));
-
-//			System.out.println("--- THE SAME example person filler text ---");
-//			result("First name",	provider.firstName());
-//			result("Last name",		provider.generate(FillerTextType.LASTNAME));
-//			result("Full name",		provider.generate("fullname"));
-//			result("Email",			provider.email());
-//			result("City",			provider.city());
-//			result("Postal code",	provider.postalCode());
-			
-//			System.out.println("--- another example person filler text because of calling provider.reset() ---");
-//			provider.reset();
-//			result("First name",	provider.firstName());
-//			result("Last name",		provider.generate(FillerTextType.LASTNAME));
-//			result("Full name",		provider.generate("fullname"));
-//			result("Email",			provider.email());
-//			result("City",			provider.city());
-//			result("Postal code",	provider.postalCode());
-		}
-		
-		System.out.println("=== start ===");
-		// --- traverse all requested locales ---
-		for	(Locale locale : locales) {
-			System.out.println("--- locale: "+locale.toString());
-			
-			FillerTextProvider provider = FillerTextProvider.get(locale);
-			provider.reset();
-			// --- use every filler text type ---
-			for	(FillerTextType type : FillerTextType.values()) {
-				result(type.toString(), provider.generate(type));
-			}
-			System.out.println();
-		}
-		System.out.println("=== done ===");
-	}
-	
-}
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/.settings/org.eclipse.core.resources.prefs
similarity index 100%
rename from org.eclipse.osbp.xtext.entitymock.common.feature/.settings/org.eclipse.core.resources.prefs
rename to org.eclipse.osbp.xtext.functionlibrarydsl.feature/.settings/org.eclipse.core.resources.prefs
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/.settings/org.eclipse.m2e.core.prefs
similarity index 100%
rename from org.eclipse.osbp.xtext.entitymock.common.feature/.settings/org.eclipse.m2e.core.prefs
rename to org.eclipse.osbp.xtext.functionlibrarydsl.feature/.settings/org.eclipse.m2e.core.prefs
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
similarity index 92%
rename from org.eclipse.osbp.xtext.entitymock.common.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
rename to org.eclipse.osbp.xtext.functionlibrarydsl.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
index 0933f8c..19e3115 100644
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -1,4 +1,5 @@
 //outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
 eclipse.preferences.version=1
 is_project_specific=true
 outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/feature.xml b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/feature.xml
index 0f456eb..914d4ef 100644
--- a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/feature.xml
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/feature.xml
@@ -14,7 +14,8 @@
       id="org.eclipse.osbp.xtext.functionlibrarydsl.feature"
       label="%featureName"
       version="0.9.0.qualifier"
-      provider-name="%providerName">
+      provider-name="%providerName"
+	  plugin="org.eclipse.osbp.xtext.functionlibrarydsl">
 
    <description>
       %description
@@ -50,6 +51,13 @@
          unpack="false"/>
 
    <plugin
+         id="org.eclipse.osbp.xtext.functionlibrarydsl.ide"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
          id="org.eclipse.osbp.xtext.functionlibrarydsl.ui"
          download-size="0"
          install-size="0"
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ide/.classpath b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/.classpath
new file mode 100644
index 0000000..5903347
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.xtext.entitymock.common/.project b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/.project
similarity index 79%
rename from org.eclipse.osbp.xtext.entitymock.common/.project
rename to org.eclipse.osbp.xtext.functionlibrarydsl.ide/.project
index c0bd5a7..1b5ca7b 100644
--- a/org.eclipse.osbp.xtext.entitymock.common/.project
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/.project
@@ -1,16 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>org.eclipse.osbp.xtext.entitymock.common</name>
+	<name>org.eclipse.osbp.xtext.functionlibrarydsl.ide</name>
 	<comment></comment>
 	<projects>
 	</projects>
 	<buildSpec>
 		<buildCommand>
-			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
 			<name>org.eclipse.jdt.core.javabuilder</name>
 			<arguments>
 			</arguments>
@@ -26,7 +21,7 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.pde.ds.core.builder</name>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
@@ -40,17 +35,12 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
-		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
 	</buildSpec>
 	<natures>
-		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
 		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
 		<nature>org.eclipse.babel.editor.rbeNature</nature>
 	</natures>
 </projectDescription>
diff --git a/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/.settings/org.eclipse.core.resources.prefs
similarity index 100%
rename from org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.core.resources.prefs
rename to org.eclipse.osbp.xtext.functionlibrarydsl.ide/.settings/org.eclipse.core.resources.prefs
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ide/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/.settings/org.eclipse.m2e.core.prefs
similarity index 100%
copy from org.eclipse.osbp.xtext.entitymock.common/.settings/org.eclipse.m2e.core.prefs
copy to org.eclipse.osbp.xtext.functionlibrarydsl.ide/.settings/org.eclipse.m2e.core.prefs
diff --git a/org.eclipse.osbp.xtext.entitymock.common.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/.settings/org.eclipse.xtend.core.Xtend.prefs
similarity index 91%
copy from org.eclipse.osbp.xtext.entitymock.common.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
copy to org.eclipse.osbp.xtext.functionlibrarydsl.ide/.settings/org.eclipse.xtend.core.Xtend.prefs
index 0933f8c..5da8aa3 100644
--- a/org.eclipse.osbp.xtext.entitymock.common.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -1,6 +1,6 @@
 //outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
 eclipse.preferences.version=1
-is_project_specific=true
 outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
 outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
 outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ide/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c1b6d7b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.functionlibrarydsl.ide
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.functionlibrarydsl.ide;singleton:=true
+Bundle-Classpath: .,src/,src-gen/
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.antlr.runtime,
+ org.eclipse.xtext.xbase.ide,
+ org.eclipse.xtext.ide,
+ org.eclipse.osbp.xtext.oxtype;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.functionlibrarydsl;bundle-version="[0.9.0,0.10.0)"
+Export-Package: org.eclipse.osbp.xtext.functionlibrarydsl.ide,
+ org.eclipse.osbp.xtext.functionlibrarydsl.ide.contentassist.antlr,
+ org.eclipse.osbp.xtext.functionlibrarydsl.ide.contentassist.antlr.internal
+
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ide/build.properties b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/build.properties
new file mode 100644
index 0000000..6ef1a59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/build.properties
@@ -0,0 +1,5 @@
+bin.includes = META-INF/,\
+				.,\
+               src/,\
+               src-gen/
+source.. = src/,src-gen/
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ide/pom.xml b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/pom.xml
new file mode 100644
index 0000000..813daf2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.eclipse.osbp.xtext.functionlibrarydsl</groupId>
+        <artifactId>org.eclipse.osbp.xtext.functionlibrarydsl.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+    <artifactId>org.eclipse.osbp.xtext.functionlibrarydsl.ide</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup
new file mode 100644
index 0000000..55d3bdd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup
@@ -0,0 +1 @@
+org.eclipse.osbp.xtext.functionlibrarydsl.ide.FunctionLibraryDslIdeSetup
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ide/AbstractFunctionLibraryDslIdeModule.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ide/AbstractFunctionLibraryDslIdeModule.java
new file mode 100644
index 0000000..be66cc5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ide/AbstractFunctionLibraryDslIdeModule.java
@@ -0,0 +1,60 @@
+/**
+ *                                                                            
+ *  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 v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl.ide;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+import org.eclipse.osbp.xtext.functionlibrarydsl.ide.contentassist.antlr.FunctionLibraryDslParser;
+import org.eclipse.osbp.xtext.functionlibrarydsl.ide.contentassist.antlr.internal.InternalFunctionLibraryDslLexer;
+import org.eclipse.xtext.ide.LexerIdeBindings;
+import org.eclipse.xtext.ide.editor.contentassist.FQNPrefixMatcher;
+import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher;
+import org.eclipse.xtext.ide.editor.contentassist.IProposalConflictHelper;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.AntlrProposalConflictHelper;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;
+import org.eclipse.xtext.xbase.ide.DefaultXbaseIdeModule;
+
+/**
+ * Manual modifications go to {@link FunctionLibraryDslIdeModule}.
+ */
+@SuppressWarnings("all")
+public abstract class AbstractFunctionLibraryDslIdeModule extends DefaultXbaseIdeModule {
+
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureContentAssistLexer(Binder binder) {
+		binder.bind(Lexer.class)
+			.annotatedWith(Names.named(LexerIdeBindings.CONTENT_ASSIST))
+			.to(InternalFunctionLibraryDslLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IContentAssistParser> bindIContentAssistParser() {
+		return FunctionLibraryDslParser.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IProposalConflictHelper> bindIProposalConflictHelper() {
+		return AntlrProposalConflictHelper.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2
+	public Class<? extends IPrefixMatcher> bindIPrefixMatcher() {
+		return FQNPrefixMatcher.class;
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/FunctionLibraryDslParser.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ide/contentassist/antlr/FunctionLibraryDslParser.java
similarity index 92%
rename from org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/FunctionLibraryDslParser.java
rename to org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ide/contentassist/antlr/FunctionLibraryDslParser.java
index c8efea8..29680ee 100644
--- a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/FunctionLibraryDslParser.java
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ide/contentassist/antlr/FunctionLibraryDslParser.java
@@ -1,6 +1,6 @@
 /**
  *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *  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 v1.0       
@@ -10,49 +10,48 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
-package org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.HashMap;
-
-import org.antlr.runtime.RecognitionException;
-import org.eclipse.xtext.AbstractElement;
-import org.eclipse.xtext.ui.editor.contentassist.antlr.AbstractContentAssistParser;
-import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+package org.eclipse.osbp.xtext.functionlibrarydsl.ide.contentassist.antlr;
 
 import com.google.inject.Inject;
-
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.osbp.xtext.functionlibrarydsl.ide.contentassist.antlr.internal.InternalFunctionLibraryDslParser;
 import org.eclipse.osbp.xtext.functionlibrarydsl.services.FunctionLibraryDslGrammarAccess;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.AbstractContentAssistParser;
 
 public class FunctionLibraryDslParser extends AbstractContentAssistParser {
-	
+
 	@Inject
 	private FunctionLibraryDslGrammarAccess grammarAccess;
-	
+
 	private Map<AbstractElement, String> nameMappings;
-	
+
 	@Override
-	protected org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.internal.InternalFunctionLibraryDslParser createParser() {
-		org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.internal.InternalFunctionLibraryDslParser result = new org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.internal.InternalFunctionLibraryDslParser(null);
+	protected InternalFunctionLibraryDslParser createParser() {
+		InternalFunctionLibraryDslParser result = new InternalFunctionLibraryDslParser(null);
 		result.setGrammarAccess(grammarAccess);
 		return result;
 	}
-	
+
 	@Override
 	protected String getRuleName(AbstractElement element) {
 		if (nameMappings == null) {
 			nameMappings = new HashMap<AbstractElement, String>() {
 				private static final long serialVersionUID = 1L;
 				{
-					put(grammarAccess.getFunctionLibraryPackageAccess().getAlternatives_5(), "rule__FunctionLibraryPackage__Alternatives_5");
-					put(grammarAccess.getFunctionLibraryPackageAccess().getGroupsAlternatives_5_0_0(), "rule__FunctionLibraryPackage__GroupsAlternatives_5_0_0");
+					put(grammarAccess.getFunctionLibraryPackageAccess().getAlternatives_4(), "rule__FunctionLibraryPackage__Alternatives_4");
+					put(grammarAccess.getFunctionLibraryPackageAccess().getGroupsAlternatives_4_0_0(), "rule__FunctionLibraryPackage__GroupsAlternatives_4_0_0");
 					put(grammarAccess.getFunctionLibraryGroupAccess().getAlternatives_3(), "rule__FunctionLibraryGroup__Alternatives_3");
 					put(grammarAccess.getFunctionLibraryBlipGroupAccess().getAlternatives_3(), "rule__FunctionLibraryBlipGroup__Alternatives_3");
 					put(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getAlternatives_3(), "rule__FunctionLibraryStatemachineGroup__Alternatives_3");
+					put(grammarAccess.getFunctionLibraryActionGroupAccess().getAlternatives_3(), "rule__FunctionLibraryActionGroup__Alternatives_3");
+					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_2(), "rule__XImportDeclaration__Alternatives_2");
+					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3(), "rule__XImportDeclaration__Alternatives_2_0_3");
 					put(grammarAccess.getXAnnotationAccess().getAlternatives_3_1(), "rule__XAnnotation__Alternatives_3_1");
 					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives(), "rule__XAnnotationElementValueOrCommaList__Alternatives");
 					put(grammarAccess.getXAnnotationElementValueAccess().getAlternatives(), "rule__XAnnotationElementValue__Alternatives");
@@ -94,12 +93,12 @@
 					put(grammarAccess.getJvmTypeReferenceAccess().getAlternatives(), "rule__JvmTypeReference__Alternatives");
 					put(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives(), "rule__JvmArgumentTypeReference__Alternatives");
 					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2(), "rule__JvmWildcardTypeReference__Alternatives_2");
-					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_1(), "rule__XImportDeclaration__Alternatives_1");
-					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_1_0_3(), "rule__XImportDeclaration__Alternatives_1_0_3");
+					put(grammarAccess.getFunctionLibraryModelAccess().getGroup(), "rule__FunctionLibraryModel__Group__0");
 					put(grammarAccess.getFunctionLibraryPackageAccess().getGroup(), "rule__FunctionLibraryPackage__Group__0");
 					put(grammarAccess.getFunctionLibraryGroupAccess().getGroup(), "rule__FunctionLibraryGroup__Group__0");
 					put(grammarAccess.getFunctionLibraryBlipGroupAccess().getGroup(), "rule__FunctionLibraryBlipGroup__Group__0");
 					put(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getGroup(), "rule__FunctionLibraryStatemachineGroup__Group__0");
+					put(grammarAccess.getFunctionLibraryActionGroupAccess().getGroup(), "rule__FunctionLibraryActionGroup__Group__0");
 					put(grammarAccess.getFunctionLibraryConverterGroupAccess().getGroup(), "rule__FunctionLibraryConverterGroup__Group__0");
 					put(grammarAccess.getFunctionConvertToModelAccess().getGroup(), "rule__FunctionConvertToModel__Group__0");
 					put(grammarAccess.getFunctionConvertToPresentationAccess().getGroup(), "rule__FunctionConvertToPresentation__Group__0");
@@ -119,7 +118,16 @@
 					put(grammarAccess.getFunctionLibraryOperationAccess().getGroup(), "rule__FunctionLibraryOperation__Group__0");
 					put(grammarAccess.getFunctionLibraryOperationAccess().getGroup_3(), "rule__FunctionLibraryOperation__Group_3__0");
 					put(grammarAccess.getFunctionLibraryOperationAccess().getGroup_3_1(), "rule__FunctionLibraryOperation__Group_3_1__0");
+					put(grammarAccess.getFunctionLibraryExecuteAccess().getGroup(), "rule__FunctionLibraryExecute__Group__0");
+					put(grammarAccess.getFunctionLibraryExecuteAccess().getGroup_3(), "rule__FunctionLibraryExecute__Group_3__0");
+					put(grammarAccess.getFunctionLibraryExecuteAccess().getGroup_3_1(), "rule__FunctionLibraryExecute__Group_3_1__0");
+					put(grammarAccess.getFunctionLibraryCanExecuteAccess().getGroup(), "rule__FunctionLibraryCanExecute__Group__0");
+					put(grammarAccess.getFunctionLibraryCanExecuteAccess().getGroup_3(), "rule__FunctionLibraryCanExecute__Group_3__0");
+					put(grammarAccess.getFunctionLibraryCanExecuteAccess().getGroup_3_1(), "rule__FunctionLibraryCanExecute__Group_3_1__0");
 					put(grammarAccess.getFunctionLibraryParameterAccess().getGroup(), "rule__FunctionLibraryParameter__Group__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup(), "rule__XImportDeclaration__Group__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup_2_0(), "rule__XImportDeclaration__Group_2_0__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup_2_3(), "rule__XImportDeclaration__Group_2_3__0");
 					put(grammarAccess.getXAnnotationAccess().getGroup(), "rule__XAnnotation__Group__0");
 					put(grammarAccess.getXAnnotationAccess().getGroup_3(), "rule__XAnnotation__Group_3__0");
 					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0(), "rule__XAnnotation__Group_3_1_0__0");
@@ -316,14 +324,12 @@
 					put(grammarAccess.getJvmTypeParameterAccess().getGroup(), "rule__JvmTypeParameter__Group__0");
 					put(grammarAccess.getJvmTypeParameterAccess().getGroup_1(), "rule__JvmTypeParameter__Group_1__0");
 					put(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup(), "rule__QualifiedNameWithWildcard__Group__0");
-					put(grammarAccess.getXImportDeclarationAccess().getGroup(), "rule__XImportDeclaration__Group__0");
-					put(grammarAccess.getXImportDeclarationAccess().getGroup_1_0(), "rule__XImportDeclaration__Group_1_0__0");
 					put(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup(), "rule__QualifiedNameInStaticImport__Group__0");
-					put(grammarAccess.getFunctionLibraryModelAccess().getPckgAssignment(), "rule__FunctionLibraryModel__PckgAssignment");
-					put(grammarAccess.getFunctionLibraryPackageAccess().getImportSectionAssignment_1(), "rule__FunctionLibraryPackage__ImportSectionAssignment_1");
-					put(grammarAccess.getFunctionLibraryPackageAccess().getNameAssignment_3(), "rule__FunctionLibraryPackage__NameAssignment_3");
-					put(grammarAccess.getFunctionLibraryPackageAccess().getGroupsAssignment_5_0(), "rule__FunctionLibraryPackage__GroupsAssignment_5_0");
-					put(grammarAccess.getFunctionLibraryPackageAccess().getRatingsAssignment_5_1(), "rule__FunctionLibraryPackage__RatingsAssignment_5_1");
+					put(grammarAccess.getFunctionLibraryModelAccess().getImportSectionAssignment_0(), "rule__FunctionLibraryModel__ImportSectionAssignment_0");
+					put(grammarAccess.getFunctionLibraryModelAccess().getPckgAssignment_1(), "rule__FunctionLibraryModel__PckgAssignment_1");
+					put(grammarAccess.getFunctionLibraryPackageAccess().getNameAssignment_2(), "rule__FunctionLibraryPackage__NameAssignment_2");
+					put(grammarAccess.getFunctionLibraryPackageAccess().getGroupsAssignment_4_0(), "rule__FunctionLibraryPackage__GroupsAssignment_4_0");
+					put(grammarAccess.getFunctionLibraryPackageAccess().getRatingsAssignment_4_1(), "rule__FunctionLibraryPackage__RatingsAssignment_4_1");
 					put(grammarAccess.getFunctionLibraryGroupAccess().getNameAssignment_1(), "rule__FunctionLibraryGroup__NameAssignment_1");
 					put(grammarAccess.getFunctionLibraryGroupAccess().getFunctionsAssignment_3_0(), "rule__FunctionLibraryGroup__FunctionsAssignment_3_0");
 					put(grammarAccess.getFunctionLibraryGroupAccess().getTestsAssignment_3_1(), "rule__FunctionLibraryGroup__TestsAssignment_3_1");
@@ -336,6 +342,9 @@
 					put(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getOperationsAssignment_3_0(), "rule__FunctionLibraryStatemachineGroup__OperationsAssignment_3_0");
 					put(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getGuardsAssignment_3_1(), "rule__FunctionLibraryStatemachineGroup__GuardsAssignment_3_1");
 					put(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getFunctionsAssignment_3_2(), "rule__FunctionLibraryStatemachineGroup__FunctionsAssignment_3_2");
+					put(grammarAccess.getFunctionLibraryActionGroupAccess().getNameAssignment_1(), "rule__FunctionLibraryActionGroup__NameAssignment_1");
+					put(grammarAccess.getFunctionLibraryActionGroupAccess().getExecutesAssignment_3_0(), "rule__FunctionLibraryActionGroup__ExecutesAssignment_3_0");
+					put(grammarAccess.getFunctionLibraryActionGroupAccess().getCanExecutesAssignment_3_1(), "rule__FunctionLibraryActionGroup__CanExecutesAssignment_3_1");
 					put(grammarAccess.getFunctionLibraryConverterGroupAccess().getNameAssignment_1(), "rule__FunctionLibraryConverterGroup__NameAssignment_1");
 					put(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToModelDatatypeAssignment_4(), "rule__FunctionLibraryConverterGroup__ConvertToModelDatatypeAssignment_4");
 					put(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToPresentationDatatypeAssignment_6(), "rule__FunctionLibraryConverterGroup__ConvertToPresentationDatatypeAssignment_6");
@@ -368,8 +377,25 @@
 					put(grammarAccess.getFunctionLibraryOperationAccess().getParamsAssignment_3_0(), "rule__FunctionLibraryOperation__ParamsAssignment_3_0");
 					put(grammarAccess.getFunctionLibraryOperationAccess().getParamsAssignment_3_1_1(), "rule__FunctionLibraryOperation__ParamsAssignment_3_1_1");
 					put(grammarAccess.getFunctionLibraryOperationAccess().getBodyAssignment_5(), "rule__FunctionLibraryOperation__BodyAssignment_5");
+					put(grammarAccess.getFunctionLibraryExecuteAccess().getNameAssignment_1(), "rule__FunctionLibraryExecute__NameAssignment_1");
+					put(grammarAccess.getFunctionLibraryExecuteAccess().getParamsAssignment_3_0(), "rule__FunctionLibraryExecute__ParamsAssignment_3_0");
+					put(grammarAccess.getFunctionLibraryExecuteAccess().getParamsAssignment_3_1_1(), "rule__FunctionLibraryExecute__ParamsAssignment_3_1_1");
+					put(grammarAccess.getFunctionLibraryExecuteAccess().getBodyAssignment_5(), "rule__FunctionLibraryExecute__BodyAssignment_5");
+					put(grammarAccess.getFunctionLibraryCanExecuteAccess().getNameAssignment_1(), "rule__FunctionLibraryCanExecute__NameAssignment_1");
+					put(grammarAccess.getFunctionLibraryCanExecuteAccess().getParamsAssignment_3_0(), "rule__FunctionLibraryCanExecute__ParamsAssignment_3_0");
+					put(grammarAccess.getFunctionLibraryCanExecuteAccess().getParamsAssignment_3_1_1(), "rule__FunctionLibraryCanExecute__ParamsAssignment_3_1_1");
+					put(grammarAccess.getFunctionLibraryCanExecuteAccess().getBodyAssignment_5(), "rule__FunctionLibraryCanExecute__BodyAssignment_5");
 					put(grammarAccess.getFunctionLibraryParameterAccess().getParameterTypeAssignment_0(), "rule__FunctionLibraryParameter__ParameterTypeAssignment_0");
 					put(grammarAccess.getFunctionLibraryParameterAccess().getNameAssignment_1(), "rule__FunctionLibraryParameter__NameAssignment_1");
+					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0(), "rule__XImportDeclaration__StaticAssignment_2_0_0");
+					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1(), "rule__XImportDeclaration__ExtensionAssignment_2_0_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_2_0_2");
+					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_2_0_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_2_0_3_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1(), "rule__XImportDeclaration__ImportedTypeAssignment_2_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_2_2");
+					put(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0(), "rule__XImportDeclaration__FqnImportAssignment_2_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1(), "rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1");
 					put(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2(), "rule__XAnnotation__AnnotationTypeAssignment_2");
 					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0");
 					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1");
@@ -518,39 +544,21 @@
 					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_0(), "rule__JvmTypeParameter__ConstraintsAssignment_1_0");
 					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_1(), "rule__JvmTypeParameter__ConstraintsAssignment_1_1");
 					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
-					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_1_0_0(), "rule__XImportDeclaration__StaticAssignment_1_0_0");
-					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_1_0_1(), "rule__XImportDeclaration__ExtensionAssignment_1_0_1");
-					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_1_0_2");
-					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_1_0_3_0");
-					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_1_0_3_1");
-					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1(), "rule__XImportDeclaration__ImportedTypeAssignment_1_1");
-					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_1_2");
 				}
 			};
 		}
 		return nameMappings.get(element);
 	}
-	
-	@Override
-	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
-		try {
-			org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.internal.InternalFunctionLibraryDslParser typedParser = (org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.internal.InternalFunctionLibraryDslParser) parser;
-			typedParser.entryRuleFunctionLibraryModel();
-			return typedParser.getFollowElements();
-		} catch(RecognitionException ex) {
-			throw new RuntimeException(ex);
-		}		
-	}
-	
+			
 	@Override
 	protected String[] getInitialHiddenTokens() {
 		return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
 	}
-	
+
 	public FunctionLibraryDslGrammarAccess getGrammarAccess() {
 		return this.grammarAccess;
 	}
-	
+
 	public void setGrammarAccess(FunctionLibraryDslGrammarAccess grammarAccess) {
 		this.grammarAccess = grammarAccess;
 	}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/PartialFunctionLibraryDslContentAssistParser.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ide/contentassist/antlr/PartialFunctionLibraryDslContentAssistParser.java
similarity index 72%
rename from org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/PartialFunctionLibraryDslContentAssistParser.java
rename to org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ide/contentassist/antlr/PartialFunctionLibraryDslContentAssistParser.java
index c0f6b4a..3b279b6 100644
--- a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/PartialFunctionLibraryDslContentAssistParser.java
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ide/contentassist/antlr/PartialFunctionLibraryDslContentAssistParser.java
@@ -1,6 +1,6 @@
 /**
  *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *  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 v1.0       
@@ -10,31 +10,29 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
-package org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr;
+package org.eclipse.osbp.xtext.functionlibrarydsl.ide.contentassist.antlr;
 
 import java.util.Collection;
 import java.util.Collections;
-
 import org.eclipse.xtext.AbstractRule;
-import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser;
-import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ide.editor.partialEditing.IPartialEditingContentAssistParser;
 import org.eclipse.xtext.util.PolymorphicDispatcher;
 
-/**
- * @author Sebastian Zarnekow - Initial contribution and API
- */
-@SuppressWarnings("restriction")
-public class PartialFunctionLibraryDslContentAssistParser extends FunctionLibraryDslParser implements IPartialContentAssistParser {
+public class PartialFunctionLibraryDslContentAssistParser extends FunctionLibraryDslParser implements IPartialEditingContentAssistParser {
 
 	private AbstractRule rule;
 
+	@Override
 	public void initializeFor(AbstractRule rule) {
 		this.rule = rule;
 	}
-	
+
 	@Override
 	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
 		if (rule == null || rule.eIsProxy())
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ide/contentassist/antlr/internal/InternalFunctionLibraryDsl.g b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ide/contentassist/antlr/internal/InternalFunctionLibraryDsl.g
new file mode 100644
index 0000000..f083a2f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ide/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ide/contentassist/antlr/internal/InternalFunctionLibraryDsl.g
@@ -0,0 +1,23626 @@
+/**
+ *                                                                            
+ *  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 v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
+
+grammar InternalFunctionLibraryDsl;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.functionlibrarydsl.ide.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.osbp.xtext.functionlibrarydsl.ide.contentassist.antlr.internal;
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.osbp.xtext.functionlibrarydsl.services.FunctionLibraryDslGrammarAccess;
+
+}
+@parser::members {
+	private FunctionLibraryDslGrammarAccess grammarAccess;
+
+	public void setGrammarAccess(FunctionLibraryDslGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+
+	@Override
+	protected Grammar getGrammar() {
+		return grammarAccess.getGrammar();
+	}
+
+	@Override
+	protected String getValueForTokenName(String tokenName) {
+		return tokenName;
+	}
+}
+
+// Entry rule entryRuleFunctionLibraryModel
+entryRuleFunctionLibraryModel
+:
+{ before(grammarAccess.getFunctionLibraryModelRule()); }
+	 ruleFunctionLibraryModel
+{ after(grammarAccess.getFunctionLibraryModelRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryModel
+ruleFunctionLibraryModel 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryModelAccess().getGroup()); }
+		(rule__FunctionLibraryModel__Group__0)
+		{ after(grammarAccess.getFunctionLibraryModelAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryPackage
+entryRuleFunctionLibraryPackage
+:
+{ before(grammarAccess.getFunctionLibraryPackageRule()); }
+	 ruleFunctionLibraryPackage
+{ after(grammarAccess.getFunctionLibraryPackageRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryPackage
+ruleFunctionLibraryPackage 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryPackageAccess().getGroup()); }
+		(rule__FunctionLibraryPackage__Group__0)
+		{ after(grammarAccess.getFunctionLibraryPackageAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryGroup
+entryRuleFunctionLibraryGroup
+:
+{ before(grammarAccess.getFunctionLibraryGroupRule()); }
+	 ruleFunctionLibraryGroup
+{ after(grammarAccess.getFunctionLibraryGroupRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryGroup
+ruleFunctionLibraryGroup 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryGroupAccess().getGroup()); }
+		(rule__FunctionLibraryGroup__Group__0)
+		{ after(grammarAccess.getFunctionLibraryGroupAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryBlipGroup
+entryRuleFunctionLibraryBlipGroup
+:
+{ before(grammarAccess.getFunctionLibraryBlipGroupRule()); }
+	 ruleFunctionLibraryBlipGroup
+{ after(grammarAccess.getFunctionLibraryBlipGroupRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryBlipGroup
+ruleFunctionLibraryBlipGroup 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryBlipGroupAccess().getGroup()); }
+		(rule__FunctionLibraryBlipGroup__Group__0)
+		{ after(grammarAccess.getFunctionLibraryBlipGroupAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryStatemachineGroup
+entryRuleFunctionLibraryStatemachineGroup
+:
+{ before(grammarAccess.getFunctionLibraryStatemachineGroupRule()); }
+	 ruleFunctionLibraryStatemachineGroup
+{ after(grammarAccess.getFunctionLibraryStatemachineGroupRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryStatemachineGroup
+ruleFunctionLibraryStatemachineGroup 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getGroup()); }
+		(rule__FunctionLibraryStatemachineGroup__Group__0)
+		{ after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryActionGroup
+entryRuleFunctionLibraryActionGroup
+:
+{ before(grammarAccess.getFunctionLibraryActionGroupRule()); }
+	 ruleFunctionLibraryActionGroup
+{ after(grammarAccess.getFunctionLibraryActionGroupRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryActionGroup
+ruleFunctionLibraryActionGroup 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryActionGroupAccess().getGroup()); }
+		(rule__FunctionLibraryActionGroup__Group__0)
+		{ after(grammarAccess.getFunctionLibraryActionGroupAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryConverterGroup
+entryRuleFunctionLibraryConverterGroup
+:
+{ before(grammarAccess.getFunctionLibraryConverterGroupRule()); }
+	 ruleFunctionLibraryConverterGroup
+{ after(grammarAccess.getFunctionLibraryConverterGroupRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryConverterGroup
+ruleFunctionLibraryConverterGroup 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryConverterGroupAccess().getGroup()); }
+		(rule__FunctionLibraryConverterGroup__Group__0)
+		{ after(grammarAccess.getFunctionLibraryConverterGroupAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionConvertToModel
+entryRuleFunctionConvertToModel
+:
+{ before(grammarAccess.getFunctionConvertToModelRule()); }
+	 ruleFunctionConvertToModel
+{ after(grammarAccess.getFunctionConvertToModelRule()); } 
+	 EOF 
+;
+
+// Rule FunctionConvertToModel
+ruleFunctionConvertToModel 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionConvertToModelAccess().getGroup()); }
+		(rule__FunctionConvertToModel__Group__0)
+		{ after(grammarAccess.getFunctionConvertToModelAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionConvertToPresentation
+entryRuleFunctionConvertToPresentation
+:
+{ before(grammarAccess.getFunctionConvertToPresentationRule()); }
+	 ruleFunctionConvertToPresentation
+{ after(grammarAccess.getFunctionConvertToPresentationRule()); } 
+	 EOF 
+;
+
+// Rule FunctionConvertToPresentation
+ruleFunctionConvertToPresentation 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionConvertToPresentationAccess().getGroup()); }
+		(rule__FunctionConvertToPresentation__Group__0)
+		{ after(grammarAccess.getFunctionConvertToPresentationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryRating
+entryRuleFunctionLibraryRating
+:
+{ before(grammarAccess.getFunctionLibraryRatingRule()); }
+	 ruleFunctionLibraryRating
+{ after(grammarAccess.getFunctionLibraryRatingRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryRating
+ruleFunctionLibraryRating 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryRatingAccess().getGroup()); }
+		(rule__FunctionLibraryRating__Group__0)
+		{ after(grammarAccess.getFunctionLibraryRatingAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryRatingItem
+entryRuleFunctionLibraryRatingItem
+:
+{ before(grammarAccess.getFunctionLibraryRatingItemRule()); }
+	 ruleFunctionLibraryRatingItem
+{ after(grammarAccess.getFunctionLibraryRatingItemRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryRatingItem
+ruleFunctionLibraryRatingItem 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryRatingItemAccess().getNameAssignment()); }
+		(rule__FunctionLibraryRatingItem__NameAssignment)
+		{ after(grammarAccess.getFunctionLibraryRatingItemAccess().getNameAssignment()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryFunction
+entryRuleFunctionLibraryFunction
+:
+{ before(grammarAccess.getFunctionLibraryFunctionRule()); }
+	 ruleFunctionLibraryFunction
+{ after(grammarAccess.getFunctionLibraryFunctionRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryFunction
+ruleFunctionLibraryFunction 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryFunctionAccess().getGroup()); }
+		(rule__FunctionLibraryFunction__Group__0)
+		{ after(grammarAccess.getFunctionLibraryFunctionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryTest
+entryRuleFunctionLibraryTest
+:
+{ before(grammarAccess.getFunctionLibraryTestRule()); }
+	 ruleFunctionLibraryTest
+{ after(grammarAccess.getFunctionLibraryTestRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryTest
+ruleFunctionLibraryTest 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryTestAccess().getGroup()); }
+		(rule__FunctionLibraryTest__Group__0)
+		{ after(grammarAccess.getFunctionLibraryTestAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryRate
+entryRuleFunctionLibraryRate
+:
+{ before(grammarAccess.getFunctionLibraryRateRule()); }
+	 ruleFunctionLibraryRate
+{ after(grammarAccess.getFunctionLibraryRateRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryRate
+ruleFunctionLibraryRate 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryRateAccess().getGroup()); }
+		(rule__FunctionLibraryRate__Group__0)
+		{ after(grammarAccess.getFunctionLibraryRateAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryGuard
+entryRuleFunctionLibraryGuard
+:
+{ before(grammarAccess.getFunctionLibraryGuardRule()); }
+	 ruleFunctionLibraryGuard
+{ after(grammarAccess.getFunctionLibraryGuardRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryGuard
+ruleFunctionLibraryGuard 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryGuardAccess().getGroup()); }
+		(rule__FunctionLibraryGuard__Group__0)
+		{ after(grammarAccess.getFunctionLibraryGuardAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryOperation
+entryRuleFunctionLibraryOperation
+:
+{ before(grammarAccess.getFunctionLibraryOperationRule()); }
+	 ruleFunctionLibraryOperation
+{ after(grammarAccess.getFunctionLibraryOperationRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryOperation
+ruleFunctionLibraryOperation 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryOperationAccess().getGroup()); }
+		(rule__FunctionLibraryOperation__Group__0)
+		{ after(grammarAccess.getFunctionLibraryOperationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryExecute
+entryRuleFunctionLibraryExecute
+:
+{ before(grammarAccess.getFunctionLibraryExecuteRule()); }
+	 ruleFunctionLibraryExecute
+{ after(grammarAccess.getFunctionLibraryExecuteRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryExecute
+ruleFunctionLibraryExecute 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryExecuteAccess().getGroup()); }
+		(rule__FunctionLibraryExecute__Group__0)
+		{ after(grammarAccess.getFunctionLibraryExecuteAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryCanExecute
+entryRuleFunctionLibraryCanExecute
+:
+{ before(grammarAccess.getFunctionLibraryCanExecuteRule()); }
+	 ruleFunctionLibraryCanExecute
+{ after(grammarAccess.getFunctionLibraryCanExecuteRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryCanExecute
+ruleFunctionLibraryCanExecute 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryCanExecuteAccess().getGroup()); }
+		(rule__FunctionLibraryCanExecute__Group__0)
+		{ after(grammarAccess.getFunctionLibraryCanExecuteAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFunctionLibraryParameter
+entryRuleFunctionLibraryParameter
+:
+{ before(grammarAccess.getFunctionLibraryParameterRule()); }
+	 ruleFunctionLibraryParameter
+{ after(grammarAccess.getFunctionLibraryParameterRule()); } 
+	 EOF 
+;
+
+// Rule FunctionLibraryParameter
+ruleFunctionLibraryParameter 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFunctionLibraryParameterAccess().getGroup()); }
+		(rule__FunctionLibraryParameter__Group__0)
+		{ after(grammarAccess.getFunctionLibraryParameterAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleTYPE_CROSS_REFERENCE
+entryRuleTYPE_CROSS_REFERENCE
+:
+{ before(grammarAccess.getTYPE_CROSS_REFERENCERule()); }
+	 ruleTYPE_CROSS_REFERENCE
+{ after(grammarAccess.getTYPE_CROSS_REFERENCERule()); } 
+	 EOF 
+;
+
+// Rule TYPE_CROSS_REFERENCE
+ruleTYPE_CROSS_REFERENCE 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); }
+		RULE_ID
+		{ after(grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXImportDeclaration
+entryRuleXImportDeclaration
+:
+{ before(grammarAccess.getXImportDeclarationRule()); }
+	 ruleXImportDeclaration
+{ after(grammarAccess.getXImportDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XImportDeclaration
+ruleXImportDeclaration 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getGroup()); }
+		(rule__XImportDeclaration__Group__0)
+		{ after(grammarAccess.getXImportDeclarationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotation
+entryRuleXAnnotation
+:
+{ before(grammarAccess.getXAnnotationRule()); }
+	 ruleXAnnotation
+{ after(grammarAccess.getXAnnotationRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotation
+ruleXAnnotation 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationAccess().getGroup()); }
+		(rule__XAnnotation__Group__0)
+		{ after(grammarAccess.getXAnnotationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotationElementValuePair
+entryRuleXAnnotationElementValuePair
+:
+{ before(grammarAccess.getXAnnotationElementValuePairRule()); }
+	 ruleXAnnotationElementValuePair
+{ after(grammarAccess.getXAnnotationElementValuePairRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
+		(rule__XAnnotationElementValuePair__Group__0)
+		{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotationElementValueOrCommaList
+entryRuleXAnnotationElementValueOrCommaList
+:
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
+	 ruleXAnnotationElementValueOrCommaList
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
+		(rule__XAnnotationElementValueOrCommaList__Alternatives)
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotationElementValue
+entryRuleXAnnotationElementValue
+:
+{ before(grammarAccess.getXAnnotationElementValueRule()); }
+	 ruleXAnnotationElementValue
+{ after(grammarAccess.getXAnnotationElementValueRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
+		(rule__XAnnotationElementValue__Alternatives)
+		{ after(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotationOrExpression
+entryRuleXAnnotationOrExpression
+:
+{ before(grammarAccess.getXAnnotationOrExpressionRule()); }
+	 ruleXAnnotationOrExpression
+{ after(grammarAccess.getXAnnotationOrExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
+		(rule__XAnnotationOrExpression__Alternatives)
+		{ after(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXExpression
+entryRuleXExpression
+:
+{ before(grammarAccess.getXExpressionRule()); }
+	 ruleXExpression
+{ after(grammarAccess.getXExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XExpression
+ruleXExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
+		ruleXAssignment
+		{ after(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAssignment
+entryRuleXAssignment
+:
+{ before(grammarAccess.getXAssignmentRule()); }
+	 ruleXAssignment
+{ after(grammarAccess.getXAssignmentRule()); } 
+	 EOF 
+;
+
+// Rule XAssignment
+ruleXAssignment 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAssignmentAccess().getAlternatives()); }
+		(rule__XAssignment__Alternatives)
+		{ after(grammarAccess.getXAssignmentAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpSingleAssign
+entryRuleOpSingleAssign
+:
+{ before(grammarAccess.getOpSingleAssignRule()); }
+	 ruleOpSingleAssign
+{ after(grammarAccess.getOpSingleAssignRule()); } 
+	 EOF 
+;
+
+// Rule OpSingleAssign
+ruleOpSingleAssign 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
+		'='
+		{ after(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpMultiAssign
+entryRuleOpMultiAssign
+:
+{ before(grammarAccess.getOpMultiAssignRule()); }
+	 ruleOpMultiAssign
+{ after(grammarAccess.getOpMultiAssignRule()); } 
+	 EOF 
+;
+
+// Rule OpMultiAssign
+ruleOpMultiAssign 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
+		(rule__OpMultiAssign__Alternatives)
+		{ after(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXOrExpression
+entryRuleXOrExpression
+:
+{ before(grammarAccess.getXOrExpressionRule()); }
+	 ruleXOrExpression
+{ after(grammarAccess.getXOrExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XOrExpression
+ruleXOrExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXOrExpressionAccess().getGroup()); }
+		(rule__XOrExpression__Group__0)
+		{ after(grammarAccess.getXOrExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpOr
+entryRuleOpOr
+:
+{ before(grammarAccess.getOpOrRule()); }
+	 ruleOpOr
+{ after(grammarAccess.getOpOrRule()); } 
+	 EOF 
+;
+
+// Rule OpOr
+ruleOpOr 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
+		'||'
+		{ after(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAndExpression
+entryRuleXAndExpression
+:
+{ before(grammarAccess.getXAndExpressionRule()); }
+	 ruleXAndExpression
+{ after(grammarAccess.getXAndExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAndExpression
+ruleXAndExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAndExpressionAccess().getGroup()); }
+		(rule__XAndExpression__Group__0)
+		{ after(grammarAccess.getXAndExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpAnd
+entryRuleOpAnd
+:
+{ before(grammarAccess.getOpAndRule()); }
+	 ruleOpAnd
+{ after(grammarAccess.getOpAndRule()); } 
+	 EOF 
+;
+
+// Rule OpAnd
+ruleOpAnd 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
+		'&&'
+		{ after(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXEqualityExpression
+entryRuleXEqualityExpression
+:
+{ before(grammarAccess.getXEqualityExpressionRule()); }
+	 ruleXEqualityExpression
+{ after(grammarAccess.getXEqualityExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XEqualityExpression
+ruleXEqualityExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
+		(rule__XEqualityExpression__Group__0)
+		{ after(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpEquality
+entryRuleOpEquality
+:
+{ before(grammarAccess.getOpEqualityRule()); }
+	 ruleOpEquality
+{ after(grammarAccess.getOpEqualityRule()); } 
+	 EOF 
+;
+
+// Rule OpEquality
+ruleOpEquality 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpEqualityAccess().getAlternatives()); }
+		(rule__OpEquality__Alternatives)
+		{ after(grammarAccess.getOpEqualityAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXRelationalExpression
+entryRuleXRelationalExpression
+:
+{ before(grammarAccess.getXRelationalExpressionRule()); }
+	 ruleXRelationalExpression
+{ after(grammarAccess.getXRelationalExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XRelationalExpression
+ruleXRelationalExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
+		(rule__XRelationalExpression__Group__0)
+		{ after(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpCompare
+entryRuleOpCompare
+:
+{ before(grammarAccess.getOpCompareRule()); }
+	 ruleOpCompare
+{ after(grammarAccess.getOpCompareRule()); } 
+	 EOF 
+;
+
+// Rule OpCompare
+ruleOpCompare 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpCompareAccess().getAlternatives()); }
+		(rule__OpCompare__Alternatives)
+		{ after(grammarAccess.getOpCompareAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXOtherOperatorExpression
+entryRuleXOtherOperatorExpression
+:
+{ before(grammarAccess.getXOtherOperatorExpressionRule()); }
+	 ruleXOtherOperatorExpression
+{ after(grammarAccess.getXOtherOperatorExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
+		(rule__XOtherOperatorExpression__Group__0)
+		{ after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpOther
+entryRuleOpOther
+:
+{ before(grammarAccess.getOpOtherRule()); }
+	 ruleOpOther
+{ after(grammarAccess.getOpOtherRule()); } 
+	 EOF 
+;
+
+// Rule OpOther
+ruleOpOther 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpOtherAccess().getAlternatives()); }
+		(rule__OpOther__Alternatives)
+		{ after(grammarAccess.getOpOtherAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAdditiveExpression
+entryRuleXAdditiveExpression
+:
+{ before(grammarAccess.getXAdditiveExpressionRule()); }
+	 ruleXAdditiveExpression
+{ after(grammarAccess.getXAdditiveExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
+		(rule__XAdditiveExpression__Group__0)
+		{ after(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpAdd
+entryRuleOpAdd
+:
+{ before(grammarAccess.getOpAddRule()); }
+	 ruleOpAdd
+{ after(grammarAccess.getOpAddRule()); } 
+	 EOF 
+;
+
+// Rule OpAdd
+ruleOpAdd 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpAddAccess().getAlternatives()); }
+		(rule__OpAdd__Alternatives)
+		{ after(grammarAccess.getOpAddAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXMultiplicativeExpression
+entryRuleXMultiplicativeExpression
+:
+{ before(grammarAccess.getXMultiplicativeExpressionRule()); }
+	 ruleXMultiplicativeExpression
+{ after(grammarAccess.getXMultiplicativeExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
+		(rule__XMultiplicativeExpression__Group__0)
+		{ after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpMulti
+entryRuleOpMulti
+:
+{ before(grammarAccess.getOpMultiRule()); }
+	 ruleOpMulti
+{ after(grammarAccess.getOpMultiRule()); } 
+	 EOF 
+;
+
+// Rule OpMulti
+ruleOpMulti 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpMultiAccess().getAlternatives()); }
+		(rule__OpMulti__Alternatives)
+		{ after(grammarAccess.getOpMultiAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXUnaryOperation
+entryRuleXUnaryOperation
+:
+{ before(grammarAccess.getXUnaryOperationRule()); }
+	 ruleXUnaryOperation
+{ after(grammarAccess.getXUnaryOperationRule()); } 
+	 EOF 
+;
+
+// Rule XUnaryOperation
+ruleXUnaryOperation 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
+		(rule__XUnaryOperation__Alternatives)
+		{ after(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpUnary
+entryRuleOpUnary
+:
+{ before(grammarAccess.getOpUnaryRule()); }
+	 ruleOpUnary
+{ after(grammarAccess.getOpUnaryRule()); } 
+	 EOF 
+;
+
+// Rule OpUnary
+ruleOpUnary 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpUnaryAccess().getAlternatives()); }
+		(rule__OpUnary__Alternatives)
+		{ after(grammarAccess.getOpUnaryAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXCastedExpression
+entryRuleXCastedExpression
+:
+{ before(grammarAccess.getXCastedExpressionRule()); }
+	 ruleXCastedExpression
+{ after(grammarAccess.getXCastedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XCastedExpression
+ruleXCastedExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXCastedExpressionAccess().getGroup()); }
+		(rule__XCastedExpression__Group__0)
+		{ after(grammarAccess.getXCastedExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXPostfixOperation
+entryRuleXPostfixOperation
+:
+{ before(grammarAccess.getXPostfixOperationRule()); }
+	 ruleXPostfixOperation
+{ after(grammarAccess.getXPostfixOperationRule()); } 
+	 EOF 
+;
+
+// Rule XPostfixOperation
+ruleXPostfixOperation 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXPostfixOperationAccess().getGroup()); }
+		(rule__XPostfixOperation__Group__0)
+		{ after(grammarAccess.getXPostfixOperationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpPostfix
+entryRuleOpPostfix
+:
+{ before(grammarAccess.getOpPostfixRule()); }
+	 ruleOpPostfix
+{ after(grammarAccess.getOpPostfixRule()); } 
+	 EOF 
+;
+
+// Rule OpPostfix
+ruleOpPostfix 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpPostfixAccess().getAlternatives()); }
+		(rule__OpPostfix__Alternatives)
+		{ after(grammarAccess.getOpPostfixAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXMemberFeatureCall
+entryRuleXMemberFeatureCall
+:
+{ before(grammarAccess.getXMemberFeatureCallRule()); }
+	 ruleXMemberFeatureCall
+{ after(grammarAccess.getXMemberFeatureCallRule()); } 
+	 EOF 
+;
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
+		(rule__XMemberFeatureCall__Group__0)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXPrimaryExpression
+entryRuleXPrimaryExpression
+:
+{ before(grammarAccess.getXPrimaryExpressionRule()); }
+	 ruleXPrimaryExpression
+{ after(grammarAccess.getXPrimaryExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
+		(rule__XPrimaryExpression__Alternatives)
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXLiteral
+entryRuleXLiteral
+:
+{ before(grammarAccess.getXLiteralRule()); }
+	 ruleXLiteral
+{ after(grammarAccess.getXLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XLiteral
+ruleXLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXLiteralAccess().getAlternatives()); }
+		(rule__XLiteral__Alternatives)
+		{ after(grammarAccess.getXLiteralAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXCollectionLiteral
+entryRuleXCollectionLiteral
+:
+{ before(grammarAccess.getXCollectionLiteralRule()); }
+	 ruleXCollectionLiteral
+{ after(grammarAccess.getXCollectionLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
+		(rule__XCollectionLiteral__Alternatives)
+		{ after(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXSetLiteral
+entryRuleXSetLiteral
+:
+{ before(grammarAccess.getXSetLiteralRule()); }
+	 ruleXSetLiteral
+{ after(grammarAccess.getXSetLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XSetLiteral
+ruleXSetLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXSetLiteralAccess().getGroup()); }
+		(rule__XSetLiteral__Group__0)
+		{ after(grammarAccess.getXSetLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXListLiteral
+entryRuleXListLiteral
+:
+{ before(grammarAccess.getXListLiteralRule()); }
+	 ruleXListLiteral
+{ after(grammarAccess.getXListLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XListLiteral
+ruleXListLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXListLiteralAccess().getGroup()); }
+		(rule__XListLiteral__Group__0)
+		{ after(grammarAccess.getXListLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXClosure
+entryRuleXClosure
+:
+{ before(grammarAccess.getXClosureRule()); }
+	 ruleXClosure
+{ after(grammarAccess.getXClosureRule()); } 
+	 EOF 
+;
+
+// Rule XClosure
+ruleXClosure 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXClosureAccess().getGroup()); }
+		(rule__XClosure__Group__0)
+		{ after(grammarAccess.getXClosureAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXExpressionInClosure
+entryRuleXExpressionInClosure
+:
+{ before(grammarAccess.getXExpressionInClosureRule()); }
+	 ruleXExpressionInClosure
+{ after(grammarAccess.getXExpressionInClosureRule()); } 
+	 EOF 
+;
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
+		(rule__XExpressionInClosure__Group__0)
+		{ after(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXShortClosure
+entryRuleXShortClosure
+:
+{ before(grammarAccess.getXShortClosureRule()); }
+	 ruleXShortClosure
+{ after(grammarAccess.getXShortClosureRule()); } 
+	 EOF 
+;
+
+// Rule XShortClosure
+ruleXShortClosure 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXShortClosureAccess().getGroup()); }
+		(rule__XShortClosure__Group__0)
+		{ after(grammarAccess.getXShortClosureAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXParenthesizedExpression
+entryRuleXParenthesizedExpression
+:
+{ before(grammarAccess.getXParenthesizedExpressionRule()); }
+	 ruleXParenthesizedExpression
+{ after(grammarAccess.getXParenthesizedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
+		(rule__XParenthesizedExpression__Group__0)
+		{ after(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXIfExpression
+entryRuleXIfExpression
+:
+{ before(grammarAccess.getXIfExpressionRule()); }
+	 ruleXIfExpression
+{ after(grammarAccess.getXIfExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XIfExpression
+ruleXIfExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXIfExpressionAccess().getGroup()); }
+		(rule__XIfExpression__Group__0)
+		{ after(grammarAccess.getXIfExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXSwitchExpression
+entryRuleXSwitchExpression
+:
+{ before(grammarAccess.getXSwitchExpressionRule()); }
+	 ruleXSwitchExpression
+{ after(grammarAccess.getXSwitchExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XSwitchExpression
+ruleXSwitchExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
+		(rule__XSwitchExpression__Group__0)
+		{ after(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXCasePart
+entryRuleXCasePart
+:
+{ before(grammarAccess.getXCasePartRule()); }
+	 ruleXCasePart
+{ after(grammarAccess.getXCasePartRule()); } 
+	 EOF 
+;
+
+// Rule XCasePart
+ruleXCasePart 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXCasePartAccess().getGroup()); }
+		(rule__XCasePart__Group__0)
+		{ after(grammarAccess.getXCasePartAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXForLoopExpression
+entryRuleXForLoopExpression
+:
+{ before(grammarAccess.getXForLoopExpressionRule()); }
+	 ruleXForLoopExpression
+{ after(grammarAccess.getXForLoopExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XForLoopExpression
+ruleXForLoopExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
+		(rule__XForLoopExpression__Group__0)
+		{ after(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXBasicForLoopExpression
+entryRuleXBasicForLoopExpression
+:
+{ before(grammarAccess.getXBasicForLoopExpressionRule()); }
+	 ruleXBasicForLoopExpression
+{ after(grammarAccess.getXBasicForLoopExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
+		(rule__XBasicForLoopExpression__Group__0)
+		{ after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXWhileExpression
+entryRuleXWhileExpression
+:
+{ before(grammarAccess.getXWhileExpressionRule()); }
+	 ruleXWhileExpression
+{ after(grammarAccess.getXWhileExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XWhileExpression
+ruleXWhileExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXWhileExpressionAccess().getGroup()); }
+		(rule__XWhileExpression__Group__0)
+		{ after(grammarAccess.getXWhileExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXDoWhileExpression
+entryRuleXDoWhileExpression
+:
+{ before(grammarAccess.getXDoWhileExpressionRule()); }
+	 ruleXDoWhileExpression
+{ after(grammarAccess.getXDoWhileExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
+		(rule__XDoWhileExpression__Group__0)
+		{ after(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXBlockExpression
+entryRuleXBlockExpression
+:
+{ before(grammarAccess.getXBlockExpressionRule()); }
+	 ruleXBlockExpression
+{ after(grammarAccess.getXBlockExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XBlockExpression
+ruleXBlockExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXBlockExpressionAccess().getGroup()); }
+		(rule__XBlockExpression__Group__0)
+		{ after(grammarAccess.getXBlockExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXExpressionOrVarDeclaration
+entryRuleXExpressionOrVarDeclaration
+:
+{ before(grammarAccess.getXExpressionOrVarDeclarationRule()); }
+	 ruleXExpressionOrVarDeclaration
+{ after(grammarAccess.getXExpressionOrVarDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
+		(rule__XExpressionOrVarDeclaration__Alternatives)
+		{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXVariableDeclaration
+entryRuleXVariableDeclaration
+:
+{ before(grammarAccess.getXVariableDeclarationRule()); }
+	 ruleXVariableDeclaration
+{ after(grammarAccess.getXVariableDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
+		(rule__XVariableDeclaration__Group__0)
+		{ after(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmFormalParameter
+entryRuleJvmFormalParameter
+:
+{ before(grammarAccess.getJvmFormalParameterRule()); }
+	 ruleJvmFormalParameter
+{ after(grammarAccess.getJvmFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
+		(rule__JvmFormalParameter__Group__0)
+		{ after(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFullJvmFormalParameter
+entryRuleFullJvmFormalParameter
+:
+{ before(grammarAccess.getFullJvmFormalParameterRule()); }
+	 ruleFullJvmFormalParameter
+{ after(grammarAccess.getFullJvmFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
+		(rule__FullJvmFormalParameter__Group__0)
+		{ after(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXFeatureCall
+entryRuleXFeatureCall
+:
+{ before(grammarAccess.getXFeatureCallRule()); }
+	 ruleXFeatureCall
+{ after(grammarAccess.getXFeatureCallRule()); } 
+	 EOF 
+;
+
+// Rule XFeatureCall
+ruleXFeatureCall 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getGroup()); }
+		(rule__XFeatureCall__Group__0)
+		{ after(grammarAccess.getXFeatureCallAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFeatureCallID
+entryRuleFeatureCallID
+:
+{ before(grammarAccess.getFeatureCallIDRule()); }
+	 ruleFeatureCallID
+{ after(grammarAccess.getFeatureCallIDRule()); } 
+	 EOF 
+;
+
+// Rule FeatureCallID
+ruleFeatureCallID 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
+		(rule__FeatureCallID__Alternatives)
+		{ after(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleIdOrSuper
+entryRuleIdOrSuper
+:
+{ before(grammarAccess.getIdOrSuperRule()); }
+	 ruleIdOrSuper
+{ after(grammarAccess.getIdOrSuperRule()); } 
+	 EOF 
+;
+
+// Rule IdOrSuper
+ruleIdOrSuper 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
+		(rule__IdOrSuper__Alternatives)
+		{ after(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXConstructorCall
+entryRuleXConstructorCall
+:
+{ before(grammarAccess.getXConstructorCallRule()); }
+	 ruleXConstructorCall
+{ after(grammarAccess.getXConstructorCallRule()); } 
+	 EOF 
+;
+
+// Rule XConstructorCall
+ruleXConstructorCall 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getGroup()); }
+		(rule__XConstructorCall__Group__0)
+		{ after(grammarAccess.getXConstructorCallAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXBooleanLiteral
+entryRuleXBooleanLiteral
+:
+{ before(grammarAccess.getXBooleanLiteralRule()); }
+	 ruleXBooleanLiteral
+{ after(grammarAccess.getXBooleanLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
+		(rule__XBooleanLiteral__Group__0)
+		{ after(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXNullLiteral
+entryRuleXNullLiteral
+:
+{ before(grammarAccess.getXNullLiteralRule()); }
+	 ruleXNullLiteral
+{ after(grammarAccess.getXNullLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XNullLiteral
+ruleXNullLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXNullLiteralAccess().getGroup()); }
+		(rule__XNullLiteral__Group__0)
+		{ after(grammarAccess.getXNullLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXNumberLiteral
+entryRuleXNumberLiteral
+:
+{ before(grammarAccess.getXNumberLiteralRule()); }
+	 ruleXNumberLiteral
+{ after(grammarAccess.getXNumberLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XNumberLiteral
+ruleXNumberLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXNumberLiteralAccess().getGroup()); }
+		(rule__XNumberLiteral__Group__0)
+		{ after(grammarAccess.getXNumberLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXStringLiteral
+entryRuleXStringLiteral
+:
+{ before(grammarAccess.getXStringLiteralRule()); }
+	 ruleXStringLiteral
+{ after(grammarAccess.getXStringLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXStringLiteralAccess().getGroup()); }
+		(rule__XStringLiteral__Group__0)
+		{ after(grammarAccess.getXStringLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXTypeLiteral
+entryRuleXTypeLiteral
+:
+{ before(grammarAccess.getXTypeLiteralRule()); }
+	 ruleXTypeLiteral
+{ after(grammarAccess.getXTypeLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXTypeLiteralAccess().getGroup()); }
+		(rule__XTypeLiteral__Group__0)
+		{ after(grammarAccess.getXTypeLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXThrowExpression
+entryRuleXThrowExpression
+:
+{ before(grammarAccess.getXThrowExpressionRule()); }
+	 ruleXThrowExpression
+{ after(grammarAccess.getXThrowExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXThrowExpressionAccess().getGroup()); }
+		(rule__XThrowExpression__Group__0)
+		{ after(grammarAccess.getXThrowExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXReturnExpression
+entryRuleXReturnExpression
+:
+{ before(grammarAccess.getXReturnExpressionRule()); }
+	 ruleXReturnExpression
+{ after(grammarAccess.getXReturnExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXReturnExpressionAccess().getGroup()); }
+		(rule__XReturnExpression__Group__0)
+		{ after(grammarAccess.getXReturnExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXTryCatchFinallyExpression
+entryRuleXTryCatchFinallyExpression
+:
+{ before(grammarAccess.getXTryCatchFinallyExpressionRule()); }
+	 ruleXTryCatchFinallyExpression
+{ after(grammarAccess.getXTryCatchFinallyExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
+		(rule__XTryCatchFinallyExpression__Group__0)
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXSynchronizedExpression
+entryRuleXSynchronizedExpression
+:
+{ before(grammarAccess.getXSynchronizedExpressionRule()); }
+	 ruleXSynchronizedExpression
+{ after(grammarAccess.getXSynchronizedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
+		(rule__XSynchronizedExpression__Group__0)
+		{ after(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXCatchClause
+entryRuleXCatchClause
+:
+{ before(grammarAccess.getXCatchClauseRule()); }
+	 ruleXCatchClause
+{ after(grammarAccess.getXCatchClauseRule()); } 
+	 EOF 
+;
+
+// Rule XCatchClause
+ruleXCatchClause 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXCatchClauseAccess().getGroup()); }
+		(rule__XCatchClause__Group__0)
+		{ after(grammarAccess.getXCatchClauseAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleQualifiedName
+entryRuleQualifiedName
+:
+{ before(grammarAccess.getQualifiedNameRule()); }
+	 ruleQualifiedName
+{ after(grammarAccess.getQualifiedNameRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedName
+ruleQualifiedName 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getQualifiedNameAccess().getGroup()); }
+		(rule__QualifiedName__Group__0)
+		{ after(grammarAccess.getQualifiedNameAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleNumber
+entryRuleNumber
+@init { 
+	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+}
+:
+{ before(grammarAccess.getNumberRule()); }
+	 ruleNumber
+{ after(grammarAccess.getNumberRule()); } 
+	 EOF 
+;
+finally {
+	myHiddenTokenState.restore();
+}
+
+// Rule Number
+ruleNumber 
+	@init {
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getNumberAccess().getAlternatives()); }
+		(rule__Number__Alternatives)
+		{ after(grammarAccess.getNumberAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+	myHiddenTokenState.restore();
+}
+
+// Entry rule entryRuleJvmTypeReference
+entryRuleJvmTypeReference
+:
+{ before(grammarAccess.getJvmTypeReferenceRule()); }
+	 ruleJvmTypeReference
+{ after(grammarAccess.getJvmTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmTypeReference
+ruleJvmTypeReference 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); }
+		(rule__JvmTypeReference__Alternatives)
+		{ after(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleArrayBrackets
+entryRuleArrayBrackets
+:
+{ before(grammarAccess.getArrayBracketsRule()); }
+	 ruleArrayBrackets
+{ after(grammarAccess.getArrayBracketsRule()); } 
+	 EOF 
+;
+
+// Rule ArrayBrackets
+ruleArrayBrackets 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getArrayBracketsAccess().getGroup()); }
+		(rule__ArrayBrackets__Group__0)
+		{ after(grammarAccess.getArrayBracketsAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXFunctionTypeRef
+entryRuleXFunctionTypeRef
+:
+{ before(grammarAccess.getXFunctionTypeRefRule()); }
+	 ruleXFunctionTypeRef
+{ after(grammarAccess.getXFunctionTypeRefRule()); } 
+	 EOF 
+;
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); }
+		(rule__XFunctionTypeRef__Group__0)
+		{ after(grammarAccess.getXFunctionTypeRefAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmParameterizedTypeReference
+entryRuleJvmParameterizedTypeReference
+:
+{ before(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
+	 ruleJvmParameterizedTypeReference
+{ after(grammarAccess.getJvmParameterizedTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); }
+		(rule__JvmParameterizedTypeReference__Group__0)
+		{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmArgumentTypeReference
+entryRuleJvmArgumentTypeReference
+:
+{ before(grammarAccess.getJvmArgumentTypeReferenceRule()); }
+	 ruleJvmArgumentTypeReference
+{ after(grammarAccess.getJvmArgumentTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); }
+		(rule__JvmArgumentTypeReference__Alternatives)
+		{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmWildcardTypeReference
+entryRuleJvmWildcardTypeReference
+:
+{ before(grammarAccess.getJvmWildcardTypeReferenceRule()); }
+	 ruleJvmWildcardTypeReference
+{ after(grammarAccess.getJvmWildcardTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); }
+		(rule__JvmWildcardTypeReference__Group__0)
+		{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmUpperBound
+entryRuleJvmUpperBound
+:
+{ before(grammarAccess.getJvmUpperBoundRule()); }
+	 ruleJvmUpperBound
+{ after(grammarAccess.getJvmUpperBoundRule()); } 
+	 EOF 
+;
+
+// Rule JvmUpperBound
+ruleJvmUpperBound 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmUpperBoundAccess().getGroup()); }
+		(rule__JvmUpperBound__Group__0)
+		{ after(grammarAccess.getJvmUpperBoundAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmUpperBoundAnded
+entryRuleJvmUpperBoundAnded
+:
+{ before(grammarAccess.getJvmUpperBoundAndedRule()); }
+	 ruleJvmUpperBoundAnded
+{ after(grammarAccess.getJvmUpperBoundAndedRule()); } 
+	 EOF 
+;
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); }
+		(rule__JvmUpperBoundAnded__Group__0)
+		{ after(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmLowerBound
+entryRuleJvmLowerBound
+:
+{ before(grammarAccess.getJvmLowerBoundRule()); }
+	 ruleJvmLowerBound
+{ after(grammarAccess.getJvmLowerBoundRule()); } 
+	 EOF 
+;
+
+// Rule JvmLowerBound
+ruleJvmLowerBound 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmLowerBoundAccess().getGroup()); }
+		(rule__JvmLowerBound__Group__0)
+		{ after(grammarAccess.getJvmLowerBoundAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmLowerBoundAnded
+entryRuleJvmLowerBoundAnded
+:
+{ before(grammarAccess.getJvmLowerBoundAndedRule()); }
+	 ruleJvmLowerBoundAnded
+{ after(grammarAccess.getJvmLowerBoundAndedRule()); } 
+	 EOF 
+;
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); }
+		(rule__JvmLowerBoundAnded__Group__0)
+		{ after(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleQualifiedNameWithWildcard
+entryRuleQualifiedNameWithWildcard
+:
+{ before(grammarAccess.getQualifiedNameWithWildcardRule()); }
+	 ruleQualifiedNameWithWildcard
+{ after(grammarAccess.getQualifiedNameWithWildcardRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); }
+		(rule__QualifiedNameWithWildcard__Group__0)
+		{ after(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleValidID
+entryRuleValidID
+:
+{ before(grammarAccess.getValidIDRule()); }
+	 ruleValidID
+{ after(grammarAccess.getValidIDRule()); } 
+	 EOF 
+;
+
+// Rule ValidID
+ruleValidID 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); }
+		RULE_ID
+		{ after(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXImportSection
+entryRuleXImportSection
+:
+{ before(grammarAccess.getXImportSectionRule()); }
+	 ruleXImportSection
+{ after(grammarAccess.getXImportSectionRule()); } 
+	 EOF 
+;
+
+// Rule XImportSection
+ruleXImportSection 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		(
+			{ before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); }
+			(rule__XImportSection__ImportDeclarationsAssignment)
+			{ after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); }
+		)
+		(
+			{ before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); }
+			(rule__XImportSection__ImportDeclarationsAssignment)*
+			{ after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); }
+		)
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleQualifiedNameInStaticImport
+entryRuleQualifiedNameInStaticImport
+:
+{ before(grammarAccess.getQualifiedNameInStaticImportRule()); }
+	 ruleQualifiedNameInStaticImport
+{ after(grammarAccess.getQualifiedNameInStaticImportRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		(
+			{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+			(rule__QualifiedNameInStaticImport__Group__0)
+			{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+		)
+		(
+			{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+			(rule__QualifiedNameInStaticImport__Group__0)*
+			{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+		)
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Alternatives_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsAssignment_4_0()); }
+		(rule__FunctionLibraryPackage__GroupsAssignment_4_0)
+		{ after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsAssignment_4_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFunctionLibraryPackageAccess().getRatingsAssignment_4_1()); }
+		(rule__FunctionLibraryPackage__RatingsAssignment_4_1)
+		{ after(grammarAccess.getFunctionLibraryPackageAccess().getRatingsAssignment_4_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__GroupsAlternatives_4_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryGroupParserRuleCall_4_0_0_0()); }
+		ruleFunctionLibraryGroup
+		{ after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryGroupParserRuleCall_4_0_0_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryBlipGroupParserRuleCall_4_0_0_1()); }
+		ruleFunctionLibraryBlipGroup
+		{ after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryBlipGroupParserRuleCall_4_0_0_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryConverterGroupParserRuleCall_4_0_0_2()); }
+		ruleFunctionLibraryConverterGroup
+		{ after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryConverterGroupParserRuleCall_4_0_0_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryStatemachineGroupParserRuleCall_4_0_0_3()); }
+		ruleFunctionLibraryStatemachineGroup
+		{ after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryStatemachineGroupParserRuleCall_4_0_0_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryActionGroupParserRuleCall_4_0_0_4()); }
+		ruleFunctionLibraryActionGroup
+		{ after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryActionGroupParserRuleCall_4_0_0_4()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGroup__Alternatives_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getFunctionLibraryGroupAccess().getFunctionsAssignment_3_0()); }
+		(rule__FunctionLibraryGroup__FunctionsAssignment_3_0)
+		{ after(grammarAccess.getFunctionLibraryGroupAccess().getFunctionsAssignment_3_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFunctionLibraryGroupAccess().getTestsAssignment_3_1()); }
+		(rule__FunctionLibraryGroup__TestsAssignment_3_1)
+		{ after(grammarAccess.getFunctionLibraryGroupAccess().getTestsAssignment_3_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFunctionLibraryGroupAccess().getRatesAssignment_3_2()); }
+		(rule__FunctionLibraryGroup__RatesAssignment_3_2)
+		{ after(grammarAccess.getFunctionLibraryGroupAccess().getRatesAssignment_3_2()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryBlipGroup__Alternatives_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getFunctionLibraryBlipGroupAccess().getFunctionsAssignment_3_0()); }
+		(rule__FunctionLibraryBlipGroup__FunctionsAssignment_3_0)
+		{ after(grammarAccess.getFunctionLibraryBlipGroupAccess().getFunctionsAssignment_3_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFunctionLibraryBlipGroupAccess().getTestsAssignment_3_1()); }
+		(rule__FunctionLibraryBlipGroup__TestsAssignment_3_1)
+		{ after(grammarAccess.getFunctionLibraryBlipGroupAccess().getTestsAssignment_3_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFunctionLibraryBlipGroupAccess().getRatesAssignment_3_2()); }
+		(rule__FunctionLibraryBlipGroup__RatesAssignment_3_2)
+		{ after(grammarAccess.getFunctionLibraryBlipGroupAccess().getRatesAssignment_3_2()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryStatemachineGroup__Alternatives_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getOperationsAssignment_3_0()); }
+		(rule__FunctionLibraryStatemachineGroup__OperationsAssignment_3_0)
+		{ after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getOperationsAssignment_3_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getGuardsAssignment_3_1()); }
+		(rule__FunctionLibraryStatemachineGroup__GuardsAssignment_3_1)
+		{ after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getGuardsAssignment_3_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getFunctionsAssignment_3_2()); }
+		(rule__FunctionLibraryStatemachineGroup__FunctionsAssignment_3_2)
+		{ after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getFunctionsAssignment_3_2()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryActionGroup__Alternatives_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getFunctionLibraryActionGroupAccess().getExecutesAssignment_3_0()); }
+		(rule__FunctionLibraryActionGroup__ExecutesAssignment_3_0)
+		{ after(grammarAccess.getFunctionLibraryActionGroupAccess().getExecutesAssignment_3_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFunctionLibraryActionGroupAccess().getCanExecutesAssignment_3_1()); }
+		(rule__FunctionLibraryActionGroup__CanExecutesAssignment_3_1)
+		{ after(grammarAccess.getFunctionLibraryActionGroupAccess().getCanExecutesAssignment_3_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Alternatives_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); }
+		(rule__XImportDeclaration__Group_2_0__0)
+		{ after(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); }
+		(rule__XImportDeclaration__ImportedTypeAssignment_2_1)
+		{ after(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); }
+		(rule__XImportDeclaration__ImportedNamespaceAssignment_2_2)
+		{ after(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); }
+		(rule__XImportDeclaration__Group_2_3__0)
+		{ after(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Alternatives_2_0_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); }
+		(rule__XImportDeclaration__WildcardAssignment_2_0_3_0)
+		{ after(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); }
+		(rule__XImportDeclaration__MemberNameAssignment_2_0_3_1)
+		{ after(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Alternatives_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); }
+		(rule__XAnnotation__Group_3_1_0__0)
+		{ after(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); }
+		(rule__XAnnotation__ValueAssignment_3_1_1)
+		{ after(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); }
+		(rule__XAnnotationElementValueOrCommaList__Group_0__0)
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); }
+		(rule__XAnnotationElementValueOrCommaList__Group_1__0)
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); }
+		(rule__XAnnotationElementValue__Group_0__0)
+		{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); }
+		ruleXAnnotationOrExpression
+		{ after(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationOrExpression__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); }
+		ruleXAnnotation
+		{ after(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); }
+		ruleXExpression
+		{ after(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAssignmentAccess().getGroup_0()); }
+		(rule__XAssignment__Group_0__0)
+		{ after(grammarAccess.getXAssignmentAccess().getGroup_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXAssignmentAccess().getGroup_1()); }
+		(rule__XAssignment__Group_1__0)
+		{ after(grammarAccess.getXAssignmentAccess().getGroup_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); }
+		'+='
+		{ after(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); }
+		'-='
+		{ after(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); }
+		'*='
+		{ after(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); }
+		'/='
+		{ after(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); }
+		'%='
+		{ after(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); }
+		(rule__OpMultiAssign__Group_5__0)
+		{ after(grammarAccess.getOpMultiAssignAccess().getGroup_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); }
+		(rule__OpMultiAssign__Group_6__0)
+		{ after(grammarAccess.getOpMultiAssignAccess().getGroup_6()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpEquality__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); }
+		'=='
+		{ after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); }
+		'!='
+		{ after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); }
+		'==='
+		{ after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); }
+		'!=='
+		{ after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Alternatives_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); }
+		(rule__XRelationalExpression__Group_1_0__0)
+		{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); }
+		(rule__XRelationalExpression__Group_1_1__0)
+		{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpCompare__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); }
+		'>='
+		{ after(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpCompareAccess().getGroup_1()); }
+		(rule__OpCompare__Group_1__0)
+		{ after(grammarAccess.getOpCompareAccess().getGroup_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); }
+		'>'
+		{ after(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); }
+		'<'
+		{ after(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); }
+		'->'
+		{ after(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); }
+		'..<'
+		{ after(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getGroup_2()); }
+		(rule__OpOther__Group_2__0)
+		{ after(grammarAccess.getOpOtherAccess().getGroup_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); }
+		'..'
+		{ after(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); }
+		'=>'
+		{ after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getGroup_5()); }
+		(rule__OpOther__Group_5__0)
+		{ after(grammarAccess.getOpOtherAccess().getGroup_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getGroup_6()); }
+		(rule__OpOther__Group_6__0)
+		{ after(grammarAccess.getOpOtherAccess().getGroup_6()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); }
+		'<>'
+		{ after(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); }
+		'?:'
+		{ after(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Alternatives_5_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); }
+		(rule__OpOther__Group_5_1_0__0)
+		{ after(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); }
+		'>'
+		{ after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Alternatives_6_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); }
+		(rule__OpOther__Group_6_1_0__0)
+		{ after(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); }
+		'<'
+		{ after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); }
+		'=>'
+		{ after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpAdd__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); }
+		'+'
+		{ after(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); }
+		'-'
+		{ after(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMulti__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); }
+		'*'
+		{ after(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); }
+		'**'
+		{ after(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); }
+		'/'
+		{ after(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); }
+		'%'
+		{ after(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XUnaryOperation__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); }
+		(rule__XUnaryOperation__Group_0__0)
+		{ after(grammarAccess.getXUnaryOperationAccess().getGroup_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); }
+		ruleXCastedExpression
+		{ after(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpUnary__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); }
+		'!'
+		{ after(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); }
+		'-'
+		{ after(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); }
+		'+'
+		{ after(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpPostfix__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); }
+		'++'
+		{ after(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); }
+		'--'
+		{ after(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); }
+		(rule__XMemberFeatureCall__Group_1_0__0)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); }
+		(rule__XMemberFeatureCall__Group_1_1__0)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); }
+		'.'
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); }
+		(rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); }
+		'.'
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); }
+		(rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); }
+		(rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1_1_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); }
+		(rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); }
+		(rule__XMemberFeatureCall__Group_1_1_3_1_1__0)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XPrimaryExpression__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); }
+		ruleXConstructorCall
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); }
+		ruleXBlockExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); }
+		ruleXSwitchExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); }
+		(ruleXSynchronizedExpression)
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); }
+		ruleXFeatureCall
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); }
+		ruleXLiteral
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); }
+		ruleXIfExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); }
+		(ruleXForLoopExpression)
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); }
+		ruleXBasicForLoopExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); }
+		ruleXWhileExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); }
+		ruleXDoWhileExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); }
+		ruleXThrowExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); }
+		ruleXReturnExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); }
+		ruleXTryCatchFinallyExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); }
+		ruleXParenthesizedExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XLiteral__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); }
+		ruleXCollectionLiteral
+		{ after(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); }
+		(ruleXClosure)
+		{ after(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); }
+		ruleXBooleanLiteral
+		{ after(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); }
+		ruleXNumberLiteral
+		{ after(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); }
+		ruleXNullLiteral
+		{ after(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); }
+		ruleXStringLiteral
+		{ after(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); }
+		ruleXTypeLiteral
+		{ after(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCollectionLiteral__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); }
+		ruleXSetLiteral
+		{ after(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); }
+		ruleXListLiteral
+		{ after(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Alternatives_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); }
+		(rule__XSwitchExpression__Group_2_0__0)
+		{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); }
+		(rule__XSwitchExpression__Group_2_1__0)
+		{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Alternatives_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXCasePartAccess().getGroup_3_0()); }
+		(rule__XCasePart__Group_3_0__0)
+		{ after(grammarAccess.getXCasePartAccess().getGroup_3_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); }
+		(rule__XCasePart__FallThroughAssignment_3_1)
+		{ after(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XExpressionOrVarDeclaration__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); }
+		ruleXVariableDeclaration
+		{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); }
+		ruleXExpression
+		{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Alternatives_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); }
+		(rule__XVariableDeclaration__WriteableAssignment_1_0)
+		{ after(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); }
+		'val'
+		{ after(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Alternatives_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); }
+		(rule__XVariableDeclaration__Group_2_0__0)
+		{ after(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); }
+		(rule__XVariableDeclaration__NameAssignment_2_1)
+		{ after(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Alternatives_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); }
+		(rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0)
+		{ after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); }
+		(rule__XFeatureCall__Group_3_1_1__0)
+		{ after(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FeatureCallID__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); }
+		ruleValidID
+		{ after(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); }
+		'extends'
+		{ after(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); }
+		'static'
+		{ after(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); }
+		'import'
+		{ after(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); }
+		'extension'
+		{ after(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IdOrSuper__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); }
+		ruleFeatureCallID
+		{ after(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); }
+		'super'
+		{ after(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Alternatives_4_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); }
+		(rule__XConstructorCall__ArgumentsAssignment_4_1_0)
+		{ after(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); }
+		(rule__XConstructorCall__Group_4_1_1__0)
+		{ after(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBooleanLiteral__Alternatives_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); }
+		'false'
+		{ after(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); }
+		(rule__XBooleanLiteral__IsTrueAssignment_1_1)
+		{ after(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Alternatives_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); }
+		(rule__XTryCatchFinallyExpression__Group_3_0__0)
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); }
+		(rule__XTryCatchFinallyExpression__Group_3_1__0)
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); }
+		RULE_HEX
+		{ after(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getNumberAccess().getGroup_1()); }
+		(rule__Number__Group_1__0)
+		{ after(grammarAccess.getNumberAccess().getGroup_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Alternatives_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); }
+		RULE_INT
+		{ after(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); }
+		RULE_DECIMAL
+		{ after(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Alternatives_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); }
+		RULE_INT
+		{ after(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); }
+		RULE_DECIMAL
+		{ after(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmTypeReference__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); }
+		(rule__JvmTypeReference__Group_0__0)
+		{ after(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); }
+		ruleXFunctionTypeRef
+		{ after(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmArgumentTypeReference__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); }
+		ruleJvmWildcardTypeReference
+		{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Alternatives_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); }
+		(rule__JvmWildcardTypeReference__Group_2_0__0)
+		{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); }
+		(rule__JvmWildcardTypeReference__Group_2_1__0)
+		{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryModel__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryModel__Group__0__Impl
+	rule__FunctionLibraryModel__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryModel__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryModelAccess().getImportSectionAssignment_0()); }
+	(rule__FunctionLibraryModel__ImportSectionAssignment_0)?
+	{ after(grammarAccess.getFunctionLibraryModelAccess().getImportSectionAssignment_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryModel__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryModel__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryModel__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryModelAccess().getPckgAssignment_1()); }
+	(rule__FunctionLibraryModel__PckgAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryModelAccess().getPckgAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryPackage__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryPackage__Group__0__Impl
+	rule__FunctionLibraryPackage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryPackageAccess().getFunctionLibraryPackageAction_0()); }
+	()
+	{ after(grammarAccess.getFunctionLibraryPackageAccess().getFunctionLibraryPackageAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryPackage__Group__1__Impl
+	rule__FunctionLibraryPackage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryPackageAccess().getPackageKeyword_1()); }
+	'package'
+	{ after(grammarAccess.getFunctionLibraryPackageAccess().getPackageKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryPackage__Group__2__Impl
+	rule__FunctionLibraryPackage__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryPackageAccess().getNameAssignment_2()); }
+	(rule__FunctionLibraryPackage__NameAssignment_2)
+	{ after(grammarAccess.getFunctionLibraryPackageAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryPackage__Group__3__Impl
+	rule__FunctionLibraryPackage__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryPackageAccess().getLeftCurlyBracketKeyword_3()); }
+	'{'
+	{ after(grammarAccess.getFunctionLibraryPackageAccess().getLeftCurlyBracketKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryPackage__Group__4__Impl
+	rule__FunctionLibraryPackage__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryPackageAccess().getAlternatives_4()); }
+	(rule__FunctionLibraryPackage__Alternatives_4)*
+	{ after(grammarAccess.getFunctionLibraryPackageAccess().getAlternatives_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryPackage__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryPackageAccess().getRightCurlyBracketKeyword_5()); }
+	'}'
+	{ after(grammarAccess.getFunctionLibraryPackageAccess().getRightCurlyBracketKeyword_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryGroup__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGroup__Group__0__Impl
+	rule__FunctionLibraryGroup__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGroup__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGroupAccess().getGroupKeyword_0()); }
+	'group'
+	{ after(grammarAccess.getFunctionLibraryGroupAccess().getGroupKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGroup__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGroup__Group__1__Impl
+	rule__FunctionLibraryGroup__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGroup__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGroupAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryGroup__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryGroupAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGroup__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGroup__Group__2__Impl
+	rule__FunctionLibraryGroup__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGroup__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGroupAccess().getLeftCurlyBracketKeyword_2()); }
+	'{'
+	{ after(grammarAccess.getFunctionLibraryGroupAccess().getLeftCurlyBracketKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGroup__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGroup__Group__3__Impl
+	rule__FunctionLibraryGroup__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGroup__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGroupAccess().getAlternatives_3()); }
+	(rule__FunctionLibraryGroup__Alternatives_3)*
+	{ after(grammarAccess.getFunctionLibraryGroupAccess().getAlternatives_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGroup__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGroup__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGroup__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGroupAccess().getRightCurlyBracketKeyword_4()); }
+	'}'
+	{ after(grammarAccess.getFunctionLibraryGroupAccess().getRightCurlyBracketKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryBlipGroup__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryBlipGroup__Group__0__Impl
+	rule__FunctionLibraryBlipGroup__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryBlipGroup__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryBlipGroupAccess().getBlipGroupKeyword_0()); }
+	'blip-group'
+	{ after(grammarAccess.getFunctionLibraryBlipGroupAccess().getBlipGroupKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryBlipGroup__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryBlipGroup__Group__1__Impl
+	rule__FunctionLibraryBlipGroup__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryBlipGroup__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryBlipGroupAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryBlipGroup__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryBlipGroupAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryBlipGroup__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryBlipGroup__Group__2__Impl
+	rule__FunctionLibraryBlipGroup__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryBlipGroup__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryBlipGroupAccess().getLeftCurlyBracketKeyword_2()); }
+	'{'
+	{ after(grammarAccess.getFunctionLibraryBlipGroupAccess().getLeftCurlyBracketKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryBlipGroup__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryBlipGroup__Group__3__Impl
+	rule__FunctionLibraryBlipGroup__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryBlipGroup__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryBlipGroupAccess().getAlternatives_3()); }
+	(rule__FunctionLibraryBlipGroup__Alternatives_3)*
+	{ after(grammarAccess.getFunctionLibraryBlipGroupAccess().getAlternatives_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryBlipGroup__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryBlipGroup__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryBlipGroup__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryBlipGroupAccess().getRightCurlyBracketKeyword_4()); }
+	'}'
+	{ after(grammarAccess.getFunctionLibraryBlipGroupAccess().getRightCurlyBracketKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryStatemachineGroup__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryStatemachineGroup__Group__0__Impl
+	rule__FunctionLibraryStatemachineGroup__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryStatemachineGroup__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getStatemachineKeyword_0()); }
+	'statemachine'
+	{ after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getStatemachineKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryStatemachineGroup__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryStatemachineGroup__Group__1__Impl
+	rule__FunctionLibraryStatemachineGroup__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryStatemachineGroup__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryStatemachineGroup__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryStatemachineGroup__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryStatemachineGroup__Group__2__Impl
+	rule__FunctionLibraryStatemachineGroup__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryStatemachineGroup__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getLeftCurlyBracketKeyword_2()); }
+	'{'
+	{ after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getLeftCurlyBracketKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryStatemachineGroup__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryStatemachineGroup__Group__3__Impl
+	rule__FunctionLibraryStatemachineGroup__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryStatemachineGroup__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getAlternatives_3()); }
+	(rule__FunctionLibraryStatemachineGroup__Alternatives_3)*
+	{ after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getAlternatives_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryStatemachineGroup__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryStatemachineGroup__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryStatemachineGroup__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getRightCurlyBracketKeyword_4()); }
+	'}'
+	{ after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getRightCurlyBracketKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryActionGroup__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryActionGroup__Group__0__Impl
+	rule__FunctionLibraryActionGroup__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryActionGroup__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryActionGroupAccess().getActionKeyword_0()); }
+	'action'
+	{ after(grammarAccess.getFunctionLibraryActionGroupAccess().getActionKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryActionGroup__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryActionGroup__Group__1__Impl
+	rule__FunctionLibraryActionGroup__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryActionGroup__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryActionGroupAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryActionGroup__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryActionGroupAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryActionGroup__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryActionGroup__Group__2__Impl
+	rule__FunctionLibraryActionGroup__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryActionGroup__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryActionGroupAccess().getLeftCurlyBracketKeyword_2()); }
+	'{'
+	{ after(grammarAccess.getFunctionLibraryActionGroupAccess().getLeftCurlyBracketKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryActionGroup__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryActionGroup__Group__3__Impl
+	rule__FunctionLibraryActionGroup__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryActionGroup__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryActionGroupAccess().getAlternatives_3()); }
+	(rule__FunctionLibraryActionGroup__Alternatives_3)*
+	{ after(grammarAccess.getFunctionLibraryActionGroupAccess().getAlternatives_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryActionGroup__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryActionGroup__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryActionGroup__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryActionGroupAccess().getRightCurlyBracketKeyword_4()); }
+	'}'
+	{ after(grammarAccess.getFunctionLibraryActionGroupAccess().getRightCurlyBracketKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryConverterGroup__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryConverterGroup__Group__0__Impl
+	rule__FunctionLibraryConverterGroup__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryConverterGroupAccess().getConverterKeyword_0()); }
+	'converter'
+	{ after(grammarAccess.getFunctionLibraryConverterGroupAccess().getConverterKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryConverterGroup__Group__1__Impl
+	rule__FunctionLibraryConverterGroup__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryConverterGroupAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryConverterGroup__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryConverterGroupAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryConverterGroup__Group__2__Impl
+	rule__FunctionLibraryConverterGroup__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryConverterGroupAccess().getLeftCurlyBracketKeyword_2()); }
+	'{'
+	{ after(grammarAccess.getFunctionLibraryConverterGroupAccess().getLeftCurlyBracketKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryConverterGroup__Group__3__Impl
+	rule__FunctionLibraryConverterGroup__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryConverterGroupAccess().getModelDatatypeKeyword_3()); }
+	'model-datatype'
+	{ after(grammarAccess.getFunctionLibraryConverterGroupAccess().getModelDatatypeKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryConverterGroup__Group__4__Impl
+	rule__FunctionLibraryConverterGroup__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToModelDatatypeAssignment_4()); }
+	(rule__FunctionLibraryConverterGroup__ConvertToModelDatatypeAssignment_4)
+	{ after(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToModelDatatypeAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryConverterGroup__Group__5__Impl
+	rule__FunctionLibraryConverterGroup__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryConverterGroupAccess().getPresentationDatatypeKeyword_5()); }
+	'presentation-datatype'
+	{ after(grammarAccess.getFunctionLibraryConverterGroupAccess().getPresentationDatatypeKeyword_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryConverterGroup__Group__6__Impl
+	rule__FunctionLibraryConverterGroup__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToPresentationDatatypeAssignment_6()); }
+	(rule__FunctionLibraryConverterGroup__ConvertToPresentationDatatypeAssignment_6)
+	{ after(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToPresentationDatatypeAssignment_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryConverterGroup__Group__7__Impl
+	rule__FunctionLibraryConverterGroup__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToModelAssignment_7()); }
+	(rule__FunctionLibraryConverterGroup__ConvertToModelAssignment_7)
+	{ after(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToModelAssignment_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__8
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryConverterGroup__Group__8__Impl
+	rule__FunctionLibraryConverterGroup__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__8__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToPresentationAssignment_8()); }
+	(rule__FunctionLibraryConverterGroup__ConvertToPresentationAssignment_8)
+	{ after(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToPresentationAssignment_8()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__9
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryConverterGroup__Group__9__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryConverterGroup__Group__9__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryConverterGroupAccess().getRightCurlyBracketKeyword_9()); }
+	'}'
+	{ after(grammarAccess.getFunctionLibraryConverterGroupAccess().getRightCurlyBracketKeyword_9()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionConvertToModel__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionConvertToModel__Group__0__Impl
+	rule__FunctionConvertToModel__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionConvertToModel__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionConvertToModelAccess().getToModelKeyword_0()); }
+	'to-model'
+	{ after(grammarAccess.getFunctionConvertToModelAccess().getToModelKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionConvertToModel__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionConvertToModel__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionConvertToModel__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionConvertToModelAccess().getBodyAssignment_1()); }
+	(rule__FunctionConvertToModel__BodyAssignment_1)
+	{ after(grammarAccess.getFunctionConvertToModelAccess().getBodyAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionConvertToPresentation__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionConvertToPresentation__Group__0__Impl
+	rule__FunctionConvertToPresentation__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionConvertToPresentation__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionConvertToPresentationAccess().getToPresentationKeyword_0()); }
+	'to-presentation'
+	{ after(grammarAccess.getFunctionConvertToPresentationAccess().getToPresentationKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionConvertToPresentation__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionConvertToPresentation__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionConvertToPresentation__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionConvertToPresentationAccess().getBodyAssignment_1()); }
+	(rule__FunctionConvertToPresentation__BodyAssignment_1)
+	{ after(grammarAccess.getFunctionConvertToPresentationAccess().getBodyAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryRating__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRating__Group__0__Impl
+	rule__FunctionLibraryRating__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRating__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRatingAccess().getFunctionLibraryRatingAction_0()); }
+	()
+	{ after(grammarAccess.getFunctionLibraryRatingAccess().getFunctionLibraryRatingAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRating__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRating__Group__1__Impl
+	rule__FunctionLibraryRating__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRating__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRatingAccess().getRatingKeyword_1()); }
+	'rating'
+	{ after(grammarAccess.getFunctionLibraryRatingAccess().getRatingKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRating__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRating__Group__2__Impl
+	rule__FunctionLibraryRating__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRating__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRatingAccess().getNameAssignment_2()); }
+	(rule__FunctionLibraryRating__NameAssignment_2)
+	{ after(grammarAccess.getFunctionLibraryRatingAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRating__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRating__Group__3__Impl
+	rule__FunctionLibraryRating__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRating__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRatingAccess().getLeftCurlyBracketKeyword_3()); }
+	'{'
+	{ after(grammarAccess.getFunctionLibraryRatingAccess().getLeftCurlyBracketKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRating__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRating__Group__4__Impl
+	rule__FunctionLibraryRating__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRating__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRatingAccess().getItemsAssignment_4()); }
+	(rule__FunctionLibraryRating__ItemsAssignment_4)*
+	{ after(grammarAccess.getFunctionLibraryRatingAccess().getItemsAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRating__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRating__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRating__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRatingAccess().getRightCurlyBracketKeyword_5()); }
+	'}'
+	{ after(grammarAccess.getFunctionLibraryRatingAccess().getRightCurlyBracketKeyword_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryFunction__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryFunction__Group__0__Impl
+	rule__FunctionLibraryFunction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryFunctionAccess().getFunctionKeyword_0()); }
+	'function'
+	{ after(grammarAccess.getFunctionLibraryFunctionAccess().getFunctionKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryFunction__Group__1__Impl
+	rule__FunctionLibraryFunction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryFunctionAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryFunction__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryFunctionAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryFunction__Group__2__Impl
+	rule__FunctionLibraryFunction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryFunctionAccess().getLeftParenthesisKeyword_2()); }
+	'('
+	{ after(grammarAccess.getFunctionLibraryFunctionAccess().getLeftParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryFunction__Group__3__Impl
+	rule__FunctionLibraryFunction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryFunctionAccess().getGroup_3()); }
+	(rule__FunctionLibraryFunction__Group_3__0)?
+	{ after(grammarAccess.getFunctionLibraryFunctionAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryFunction__Group__4__Impl
+	rule__FunctionLibraryFunction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryFunctionAccess().getRightParenthesisKeyword_4()); }
+	')'
+	{ after(grammarAccess.getFunctionLibraryFunctionAccess().getRightParenthesisKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryFunction__Group__5__Impl
+	rule__FunctionLibraryFunction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryFunctionAccess().getReturnsKeyword_5()); }
+	'returns'
+	{ after(grammarAccess.getFunctionLibraryFunctionAccess().getReturnsKeyword_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryFunction__Group__6__Impl
+	rule__FunctionLibraryFunction__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryFunctionAccess().getOftypeAssignment_6()); }
+	(rule__FunctionLibraryFunction__OftypeAssignment_6)
+	{ after(grammarAccess.getFunctionLibraryFunctionAccess().getOftypeAssignment_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryFunction__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryFunctionAccess().getBodyAssignment_7()); }
+	(rule__FunctionLibraryFunction__BodyAssignment_7)
+	{ after(grammarAccess.getFunctionLibraryFunctionAccess().getBodyAssignment_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryFunction__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryFunction__Group_3__0__Impl
+	rule__FunctionLibraryFunction__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryFunctionAccess().getParamsAssignment_3_0()); }
+	(rule__FunctionLibraryFunction__ParamsAssignment_3_0)
+	{ after(grammarAccess.getFunctionLibraryFunctionAccess().getParamsAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryFunction__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryFunctionAccess().getGroup_3_1()); }
+	(rule__FunctionLibraryFunction__Group_3_1__0)*
+	{ after(grammarAccess.getFunctionLibraryFunctionAccess().getGroup_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryFunction__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryFunction__Group_3_1__0__Impl
+	rule__FunctionLibraryFunction__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryFunctionAccess().getCommaKeyword_3_1_0()); }
+	','
+	{ after(grammarAccess.getFunctionLibraryFunctionAccess().getCommaKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryFunction__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryFunction__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryFunctionAccess().getParamsAssignment_3_1_1()); }
+	(rule__FunctionLibraryFunction__ParamsAssignment_3_1_1)
+	{ after(grammarAccess.getFunctionLibraryFunctionAccess().getParamsAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryTest__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryTest__Group__0__Impl
+	rule__FunctionLibraryTest__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryTestAccess().getTestKeyword_0()); }
+	'test'
+	{ after(grammarAccess.getFunctionLibraryTestAccess().getTestKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryTest__Group__1__Impl
+	rule__FunctionLibraryTest__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryTestAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryTest__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryTestAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryTest__Group__2__Impl
+	rule__FunctionLibraryTest__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryTestAccess().getLeftParenthesisKeyword_2()); }
+	'('
+	{ after(grammarAccess.getFunctionLibraryTestAccess().getLeftParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryTest__Group__3__Impl
+	rule__FunctionLibraryTest__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryTestAccess().getGroup_3()); }
+	(rule__FunctionLibraryTest__Group_3__0)?
+	{ after(grammarAccess.getFunctionLibraryTestAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryTest__Group__4__Impl
+	rule__FunctionLibraryTest__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryTestAccess().getRightParenthesisKeyword_4()); }
+	')'
+	{ after(grammarAccess.getFunctionLibraryTestAccess().getRightParenthesisKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryTest__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryTestAccess().getBodyAssignment_5()); }
+	(rule__FunctionLibraryTest__BodyAssignment_5)
+	{ after(grammarAccess.getFunctionLibraryTestAccess().getBodyAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryTest__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryTest__Group_3__0__Impl
+	rule__FunctionLibraryTest__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryTestAccess().getParamsAssignment_3_0()); }
+	(rule__FunctionLibraryTest__ParamsAssignment_3_0)
+	{ after(grammarAccess.getFunctionLibraryTestAccess().getParamsAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryTest__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryTestAccess().getGroup_3_1()); }
+	(rule__FunctionLibraryTest__Group_3_1__0)*
+	{ after(grammarAccess.getFunctionLibraryTestAccess().getGroup_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryTest__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryTest__Group_3_1__0__Impl
+	rule__FunctionLibraryTest__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryTestAccess().getCommaKeyword_3_1_0()); }
+	','
+	{ after(grammarAccess.getFunctionLibraryTestAccess().getCommaKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryTest__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryTest__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryTestAccess().getParamsAssignment_3_1_1()); }
+	(rule__FunctionLibraryTest__ParamsAssignment_3_1_1)
+	{ after(grammarAccess.getFunctionLibraryTestAccess().getParamsAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryRate__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRate__Group__0__Impl
+	rule__FunctionLibraryRate__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRateAccess().getRateKeyword_0()); }
+	'rate'
+	{ after(grammarAccess.getFunctionLibraryRateAccess().getRateKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRate__Group__1__Impl
+	rule__FunctionLibraryRate__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRateAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryRate__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryRateAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRate__Group__2__Impl
+	rule__FunctionLibraryRate__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRateAccess().getLeftParenthesisKeyword_2()); }
+	'('
+	{ after(grammarAccess.getFunctionLibraryRateAccess().getLeftParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRate__Group__3__Impl
+	rule__FunctionLibraryRate__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRateAccess().getGroup_3()); }
+	(rule__FunctionLibraryRate__Group_3__0)?
+	{ after(grammarAccess.getFunctionLibraryRateAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRate__Group__4__Impl
+	rule__FunctionLibraryRate__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRateAccess().getRightParenthesisKeyword_4()); }
+	')'
+	{ after(grammarAccess.getFunctionLibraryRateAccess().getRightParenthesisKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRate__Group__5__Impl
+	rule__FunctionLibraryRate__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRateAccess().getReturnsKeyword_5()); }
+	'returns'
+	{ after(grammarAccess.getFunctionLibraryRateAccess().getReturnsKeyword_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRate__Group__6__Impl
+	rule__FunctionLibraryRate__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRateAccess().getOftypeAssignment_6()); }
+	(rule__FunctionLibraryRate__OftypeAssignment_6)
+	{ after(grammarAccess.getFunctionLibraryRateAccess().getOftypeAssignment_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRate__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRateAccess().getBodyAssignment_7()); }
+	(rule__FunctionLibraryRate__BodyAssignment_7)
+	{ after(grammarAccess.getFunctionLibraryRateAccess().getBodyAssignment_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryRate__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRate__Group_3__0__Impl
+	rule__FunctionLibraryRate__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRateAccess().getParamsAssignment_3_0()); }
+	(rule__FunctionLibraryRate__ParamsAssignment_3_0)
+	{ after(grammarAccess.getFunctionLibraryRateAccess().getParamsAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRate__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRateAccess().getGroup_3_1()); }
+	(rule__FunctionLibraryRate__Group_3_1__0)*
+	{ after(grammarAccess.getFunctionLibraryRateAccess().getGroup_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryRate__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRate__Group_3_1__0__Impl
+	rule__FunctionLibraryRate__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRateAccess().getCommaKeyword_3_1_0()); }
+	','
+	{ after(grammarAccess.getFunctionLibraryRateAccess().getCommaKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryRate__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryRate__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryRateAccess().getParamsAssignment_3_1_1()); }
+	(rule__FunctionLibraryRate__ParamsAssignment_3_1_1)
+	{ after(grammarAccess.getFunctionLibraryRateAccess().getParamsAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryGuard__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGuard__Group__0__Impl
+	rule__FunctionLibraryGuard__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGuardAccess().getGuardKeyword_0()); }
+	'guard'
+	{ after(grammarAccess.getFunctionLibraryGuardAccess().getGuardKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGuard__Group__1__Impl
+	rule__FunctionLibraryGuard__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGuardAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryGuard__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryGuardAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGuard__Group__2__Impl
+	rule__FunctionLibraryGuard__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGuardAccess().getLeftParenthesisKeyword_2()); }
+	'('
+	{ after(grammarAccess.getFunctionLibraryGuardAccess().getLeftParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGuard__Group__3__Impl
+	rule__FunctionLibraryGuard__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGuardAccess().getGroup_3()); }
+	(rule__FunctionLibraryGuard__Group_3__0)?
+	{ after(grammarAccess.getFunctionLibraryGuardAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGuard__Group__4__Impl
+	rule__FunctionLibraryGuard__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGuardAccess().getRightParenthesisKeyword_4()); }
+	')'
+	{ after(grammarAccess.getFunctionLibraryGuardAccess().getRightParenthesisKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGuard__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGuardAccess().getBodyAssignment_5()); }
+	(rule__FunctionLibraryGuard__BodyAssignment_5)
+	{ after(grammarAccess.getFunctionLibraryGuardAccess().getBodyAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryGuard__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGuard__Group_3__0__Impl
+	rule__FunctionLibraryGuard__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGuardAccess().getParamsAssignment_3_0()); }
+	(rule__FunctionLibraryGuard__ParamsAssignment_3_0)
+	{ after(grammarAccess.getFunctionLibraryGuardAccess().getParamsAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGuard__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGuardAccess().getGroup_3_1()); }
+	(rule__FunctionLibraryGuard__Group_3_1__0)*
+	{ after(grammarAccess.getFunctionLibraryGuardAccess().getGroup_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryGuard__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGuard__Group_3_1__0__Impl
+	rule__FunctionLibraryGuard__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGuardAccess().getCommaKeyword_3_1_0()); }
+	','
+	{ after(grammarAccess.getFunctionLibraryGuardAccess().getCommaKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryGuard__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryGuard__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryGuardAccess().getParamsAssignment_3_1_1()); }
+	(rule__FunctionLibraryGuard__ParamsAssignment_3_1_1)
+	{ after(grammarAccess.getFunctionLibraryGuardAccess().getParamsAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryOperation__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryOperation__Group__0__Impl
+	rule__FunctionLibraryOperation__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryOperationAccess().getOperationKeyword_0()); }
+	'operation'
+	{ after(grammarAccess.getFunctionLibraryOperationAccess().getOperationKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryOperation__Group__1__Impl
+	rule__FunctionLibraryOperation__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryOperationAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryOperation__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryOperationAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryOperation__Group__2__Impl
+	rule__FunctionLibraryOperation__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryOperationAccess().getLeftParenthesisKeyword_2()); }
+	'('
+	{ after(grammarAccess.getFunctionLibraryOperationAccess().getLeftParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryOperation__Group__3__Impl
+	rule__FunctionLibraryOperation__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryOperationAccess().getGroup_3()); }
+	(rule__FunctionLibraryOperation__Group_3__0)?
+	{ after(grammarAccess.getFunctionLibraryOperationAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryOperation__Group__4__Impl
+	rule__FunctionLibraryOperation__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryOperationAccess().getRightParenthesisKeyword_4()); }
+	')'
+	{ after(grammarAccess.getFunctionLibraryOperationAccess().getRightParenthesisKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryOperation__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryOperationAccess().getBodyAssignment_5()); }
+	(rule__FunctionLibraryOperation__BodyAssignment_5)
+	{ after(grammarAccess.getFunctionLibraryOperationAccess().getBodyAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryOperation__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryOperation__Group_3__0__Impl
+	rule__FunctionLibraryOperation__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryOperationAccess().getParamsAssignment_3_0()); }
+	(rule__FunctionLibraryOperation__ParamsAssignment_3_0)
+	{ after(grammarAccess.getFunctionLibraryOperationAccess().getParamsAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryOperation__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryOperationAccess().getGroup_3_1()); }
+	(rule__FunctionLibraryOperation__Group_3_1__0)*
+	{ after(grammarAccess.getFunctionLibraryOperationAccess().getGroup_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryOperation__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryOperation__Group_3_1__0__Impl
+	rule__FunctionLibraryOperation__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryOperationAccess().getCommaKeyword_3_1_0()); }
+	','
+	{ after(grammarAccess.getFunctionLibraryOperationAccess().getCommaKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryOperation__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryOperation__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryOperationAccess().getParamsAssignment_3_1_1()); }
+	(rule__FunctionLibraryOperation__ParamsAssignment_3_1_1)
+	{ after(grammarAccess.getFunctionLibraryOperationAccess().getParamsAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryExecute__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryExecute__Group__0__Impl
+	rule__FunctionLibraryExecute__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryExecuteAccess().getExecuteKeyword_0()); }
+	'execute'
+	{ after(grammarAccess.getFunctionLibraryExecuteAccess().getExecuteKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryExecute__Group__1__Impl
+	rule__FunctionLibraryExecute__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryExecuteAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryExecute__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryExecuteAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryExecute__Group__2__Impl
+	rule__FunctionLibraryExecute__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryExecuteAccess().getLeftParenthesisKeyword_2()); }
+	'('
+	{ after(grammarAccess.getFunctionLibraryExecuteAccess().getLeftParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryExecute__Group__3__Impl
+	rule__FunctionLibraryExecute__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryExecuteAccess().getGroup_3()); }
+	(rule__FunctionLibraryExecute__Group_3__0)?
+	{ after(grammarAccess.getFunctionLibraryExecuteAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryExecute__Group__4__Impl
+	rule__FunctionLibraryExecute__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryExecuteAccess().getRightParenthesisKeyword_4()); }
+	')'
+	{ after(grammarAccess.getFunctionLibraryExecuteAccess().getRightParenthesisKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryExecute__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryExecuteAccess().getBodyAssignment_5()); }
+	(rule__FunctionLibraryExecute__BodyAssignment_5)
+	{ after(grammarAccess.getFunctionLibraryExecuteAccess().getBodyAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryExecute__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryExecute__Group_3__0__Impl
+	rule__FunctionLibraryExecute__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryExecuteAccess().getParamsAssignment_3_0()); }
+	(rule__FunctionLibraryExecute__ParamsAssignment_3_0)
+	{ after(grammarAccess.getFunctionLibraryExecuteAccess().getParamsAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryExecute__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryExecuteAccess().getGroup_3_1()); }
+	(rule__FunctionLibraryExecute__Group_3_1__0)*
+	{ after(grammarAccess.getFunctionLibraryExecuteAccess().getGroup_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryExecute__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryExecute__Group_3_1__0__Impl
+	rule__FunctionLibraryExecute__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryExecuteAccess().getCommaKeyword_3_1_0()); }
+	','
+	{ after(grammarAccess.getFunctionLibraryExecuteAccess().getCommaKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryExecute__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryExecute__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryExecuteAccess().getParamsAssignment_3_1_1()); }
+	(rule__FunctionLibraryExecute__ParamsAssignment_3_1_1)
+	{ after(grammarAccess.getFunctionLibraryExecuteAccess().getParamsAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryCanExecute__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryCanExecute__Group__0__Impl
+	rule__FunctionLibraryCanExecute__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryCanExecuteAccess().getCanExecuteKeyword_0()); }
+	'canExecute'
+	{ after(grammarAccess.getFunctionLibraryCanExecuteAccess().getCanExecuteKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryCanExecute__Group__1__Impl
+	rule__FunctionLibraryCanExecute__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryCanExecuteAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryCanExecute__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryCanExecuteAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryCanExecute__Group__2__Impl
+	rule__FunctionLibraryCanExecute__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryCanExecuteAccess().getLeftParenthesisKeyword_2()); }
+	'('
+	{ after(grammarAccess.getFunctionLibraryCanExecuteAccess().getLeftParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryCanExecute__Group__3__Impl
+	rule__FunctionLibraryCanExecute__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryCanExecuteAccess().getGroup_3()); }
+	(rule__FunctionLibraryCanExecute__Group_3__0)?
+	{ after(grammarAccess.getFunctionLibraryCanExecuteAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryCanExecute__Group__4__Impl
+	rule__FunctionLibraryCanExecute__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryCanExecuteAccess().getRightParenthesisKeyword_4()); }
+	')'
+	{ after(grammarAccess.getFunctionLibraryCanExecuteAccess().getRightParenthesisKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryCanExecute__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryCanExecuteAccess().getBodyAssignment_5()); }
+	(rule__FunctionLibraryCanExecute__BodyAssignment_5)
+	{ after(grammarAccess.getFunctionLibraryCanExecuteAccess().getBodyAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryCanExecute__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryCanExecute__Group_3__0__Impl
+	rule__FunctionLibraryCanExecute__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryCanExecuteAccess().getParamsAssignment_3_0()); }
+	(rule__FunctionLibraryCanExecute__ParamsAssignment_3_0)
+	{ after(grammarAccess.getFunctionLibraryCanExecuteAccess().getParamsAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryCanExecute__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryCanExecuteAccess().getGroup_3_1()); }
+	(rule__FunctionLibraryCanExecute__Group_3_1__0)*
+	{ after(grammarAccess.getFunctionLibraryCanExecuteAccess().getGroup_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryCanExecute__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryCanExecute__Group_3_1__0__Impl
+	rule__FunctionLibraryCanExecute__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryCanExecuteAccess().getCommaKeyword_3_1_0()); }
+	','
+	{ after(grammarAccess.getFunctionLibraryCanExecuteAccess().getCommaKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryCanExecute__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryCanExecute__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryCanExecuteAccess().getParamsAssignment_3_1_1()); }
+	(rule__FunctionLibraryCanExecute__ParamsAssignment_3_1_1)
+	{ after(grammarAccess.getFunctionLibraryCanExecuteAccess().getParamsAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryParameter__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryParameter__Group__0__Impl
+	rule__FunctionLibraryParameter__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryParameter__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryParameterAccess().getParameterTypeAssignment_0()); }
+	(rule__FunctionLibraryParameter__ParameterTypeAssignment_0)
+	{ after(grammarAccess.getFunctionLibraryParameterAccess().getParameterTypeAssignment_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryParameter__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FunctionLibraryParameter__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryParameter__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFunctionLibraryParameterAccess().getNameAssignment_1()); }
+	(rule__FunctionLibraryParameter__NameAssignment_1)
+	{ after(grammarAccess.getFunctionLibraryParameterAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XImportDeclaration__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group__0__Impl
+	rule__XImportDeclaration__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); }
+	()
+	{ after(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group__1__Impl
+	rule__XImportDeclaration__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getImportKeyword_1()); }
+	'import'
+	{ after(grammarAccess.getXImportDeclarationAccess().getImportKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group__2__Impl
+	rule__XImportDeclaration__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); }
+	(rule__XImportDeclaration__Alternatives_2)
+	{ after(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); }
+	(';')?
+	{ after(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XImportDeclaration__Group_2_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group_2_0__0__Impl
+	rule__XImportDeclaration__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); }
+	(rule__XImportDeclaration__StaticAssignment_2_0_0)
+	{ after(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group_2_0__1__Impl
+	rule__XImportDeclaration__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); }
+	(rule__XImportDeclaration__ExtensionAssignment_2_0_1)?
+	{ after(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group_2_0__2__Impl
+	rule__XImportDeclaration__Group_2_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); }
+	(rule__XImportDeclaration__ImportedTypeAssignment_2_0_2)
+	{ after(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group_2_0__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); }
+	(rule__XImportDeclaration__Alternatives_2_0_3)
+	{ after(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XImportDeclaration__Group_2_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group_2_3__0__Impl
+	rule__XImportDeclaration__Group_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); }
+	(rule__XImportDeclaration__FqnImportAssignment_2_3_0)
+	{ after(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); }
+	(rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1)
+	{ after(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group__0__Impl
+	rule__XAnnotation__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); }
+	()
+	{ after(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group__1__Impl
+	rule__XAnnotation__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); }
+	'@'
+	{ after(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group__2__Impl
+	rule__XAnnotation__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); }
+	(rule__XAnnotation__AnnotationTypeAssignment_2)
+	{ after(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getGroup_3()); }
+	(rule__XAnnotation__Group_3__0)?
+	{ after(grammarAccess.getXAnnotationAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3__0__Impl
+	rule__XAnnotation__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); }
+	('(')
+	{ after(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3__1__Impl
+	rule__XAnnotation__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); }
+	(rule__XAnnotation__Alternatives_3_1)?
+	{ after(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); }
+	')'
+	{ after(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group_3_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3_1_0__0__Impl
+	rule__XAnnotation__Group_3_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); }
+	(rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0)
+	{ after(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3_1_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); }
+	(rule__XAnnotation__Group_3_1_0_1__0)*
+	{ after(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group_3_1_0_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3_1_0_1__0__Impl
+	rule__XAnnotation__Group_3_1_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); }
+	','
+	{ after(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3_1_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); }
+	(rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1)
+	{ after(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValuePair__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValuePair__Group__0__Impl
+	rule__XAnnotationElementValuePair__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); }
+	(rule__XAnnotationElementValuePair__Group_0__0)
+	{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValuePair__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); }
+	(rule__XAnnotationElementValuePair__ValueAssignment_1)
+	{ after(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValuePair__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValuePair__Group_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); }
+	(rule__XAnnotationElementValuePair__Group_0_0__0)
+	{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValuePair__Group_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValuePair__Group_0_0__0__Impl
+	rule__XAnnotationElementValuePair__Group_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); }
+	(rule__XAnnotationElementValuePair__ElementAssignment_0_0_0)
+	{ after(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValuePair__Group_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1()); }
+	'='
+	{ after(grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); }
+	(rule__XAnnotationElementValueOrCommaList__Group_0_0__0)
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); }
+	(rule__XAnnotationElementValueOrCommaList__Group_0_1__0)?
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); }
+	']'
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); }
+	(rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0)
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); }
+	()
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); }
+	'#'
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); }
+	'['
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); }
+	(rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0)
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); }
+	(rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0)*
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); }
+	','
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); }
+	(rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1)
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); }
+	ruleXAnnotationOrExpression
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); }
+	(rule__XAnnotationElementValueOrCommaList__Group_1_1__0)?
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); }
+	()
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); }
+		(rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0)
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); }
+	)
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); }
+		(rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0)*
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); }
+	)
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); }
+	','
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); }
+	(rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1)
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0__0__Impl
+	rule__XAnnotationElementValue__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); }
+	(rule__XAnnotationElementValue__Group_0_0__0)
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0__1__Impl
+	rule__XAnnotationElementValue__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); }
+	(rule__XAnnotationElementValue__Group_0_1__0)?
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); }
+	']'
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); }
+	(rule__XAnnotationElementValue__Group_0_0_0__0)
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_0_0__0__Impl
+	rule__XAnnotationElementValue__Group_0_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); }
+	()
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_0_0__1__Impl
+	rule__XAnnotationElementValue__Group_0_0_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); }
+	'#'
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_0_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); }
+	'['
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_1__0__Impl
+	rule__XAnnotationElementValue__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); }
+	(rule__XAnnotationElementValue__ElementsAssignment_0_1_0)
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); }
+	(rule__XAnnotationElementValue__Group_0_1_1__0)*
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_1_1__0__Impl
+	rule__XAnnotationElementValue__Group_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); }
+	','
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); }
+	(rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1)
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_0__0__Impl
+	rule__XAssignment__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); }
+	()
+	{ after(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_0__1__Impl
+	rule__XAssignment__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); }
+	(rule__XAssignment__FeatureAssignment_0_1)
+	{ after(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_0__2__Impl
+	rule__XAssignment__Group_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); }
+	ruleOpSingleAssign
+	{ after(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_0__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); }
+	(rule__XAssignment__ValueAssignment_0_3)
+	{ after(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1__0__Impl
+	rule__XAssignment__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); }
+	ruleXOrExpression
+	{ after(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getGroup_1_1()); }
+	(rule__XAssignment__Group_1_1__0)?
+	{ after(grammarAccess.getXAssignmentAccess().getGroup_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1_1__0__Impl
+	rule__XAssignment__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); }
+	(rule__XAssignment__Group_1_1_0__0)
+	{ after(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); }
+	(rule__XAssignment__RightOperandAssignment_1_1_1)
+	{ after(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_1_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); }
+	(rule__XAssignment__Group_1_1_0_0__0)
+	{ after(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_1_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1_1_0_0__0__Impl
+	rule__XAssignment__Group_1_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); }
+	(rule__XAssignment__FeatureAssignment_1_1_0_0_1)
+	{ after(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpMultiAssign__Group_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpMultiAssign__Group_5__0__Impl
+	rule__OpMultiAssign__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); }
+	'<'
+	{ after(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpMultiAssign__Group_5__1__Impl
+	rule__OpMultiAssign__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); }
+	'<'
+	{ after(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpMultiAssign__Group_5__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); }
+	'='
+	{ after(grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpMultiAssign__Group_6__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpMultiAssign__Group_6__0__Impl
+	rule__OpMultiAssign__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); }
+	'>'
+	{ after(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpMultiAssign__Group_6__1__Impl
+	rule__OpMultiAssign__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); }
+	('>')?
+	{ after(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpMultiAssign__Group_6__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); }
+	'>='
+	{ after(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOrExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group__0__Impl
+	rule__XOrExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); }
+	ruleXAndExpression
+	{ after(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getGroup_1()); }
+	(rule__XOrExpression__Group_1__0)*
+	{ after(grammarAccess.getXOrExpressionAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOrExpression__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group_1__0__Impl
+	rule__XOrExpression__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); }
+	(rule__XOrExpression__Group_1_0__0)
+	{ after(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); }
+	(rule__XOrExpression__RightOperandAssignment_1_1)
+	{ after(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOrExpression__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); }
+	(rule__XOrExpression__Group_1_0_0__0)
+	{ after(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOrExpression__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group_1_0_0__0__Impl
+	rule__XOrExpression__Group_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+	(rule__XOrExpression__FeatureAssignment_1_0_0_1)
+	{ after(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAndExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group__0__Impl
+	rule__XAndExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); }
+	ruleXEqualityExpression
+	{ after(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getGroup_1()); }
+	(rule__XAndExpression__Group_1__0)*
+	{ after(grammarAccess.getXAndExpressionAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAndExpression__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group_1__0__Impl
+	rule__XAndExpression__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); }
+	(rule__XAndExpression__Group_1_0__0)
+	{ after(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); }
+	(rule__XAndExpression__RightOperandAssignment_1_1)
+	{ after(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAndExpression__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); }
+	(rule__XAndExpression__Group_1_0_0__0)
+	{ after(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAndExpression__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group_1_0_0__0__Impl
+	rule__XAndExpression__Group_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+	(rule__XAndExpression__FeatureAssignment_1_0_0_1)
+	{ after(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XEqualityExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group__0__Impl
+	rule__XEqualityExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); }
+	ruleXRelationalExpression
+	{ after(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); }
+	(rule__XEqualityExpression__Group_1__0)*
+	{ after(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XEqualityExpression__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group_1__0__Impl
+	rule__XEqualityExpression__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); }
+	(rule__XEqualityExpression__Group_1_0__0)
+	{ after(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); }
+	(rule__XEqualityExpression__RightOperandAssignment_1_1)
+	{ after(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XEqualityExpression__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); }
+	(rule__XEqualityExpression__Group_1_0_0__0)
+	{ after(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XEqualityExpression__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group_1_0_0__0__Impl
+	rule__XEqualityExpression__Group_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+	(rule__XEqualityExpression__FeatureAssignment_1_0_0_1)
+	{ after(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XRelationalExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group__0__Impl
+	rule__XRelationalExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); }
+	ruleXOtherOperatorExpression
+	{ after(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); }
+	(rule__XRelationalExpression__Alternatives_1)*
+	{ after(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XRelationalExpression__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_0__0__Impl
+	rule__XRelationalExpression__Group_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); }
+	(rule__XRelationalExpression__Group_1_0_0__0)
+	{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); }
+	(rule__XRelationalExpression__TypeAssignment_1_0_1)
+	{ after(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XRelationalExpression__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_0_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); }
+	(rule__XRelationalExpression__Group_1_0_0_0__0)
+	{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XRelationalExpression__Group_1_0_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_0_0_0__0__Impl
+	rule__XRelationalExpression__Group_1_0_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); }
+	()
+	{ after(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_0_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); }
+	'instanceof'
+	{ after(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XRelationalExpression__Group_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_1__0__Impl
+	rule__XRelationalExpression__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); }
+	(rule__XRelationalExpression__Group_1_1_0__0)
+	{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_1__1__Impl